Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
シンプルなモック生成ツール matryer/moq 使ってみた
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
uji
May 31, 2021
Technology
670
0
Share
シンプルなモック生成ツール matryer/moq 使ってみた
uji
May 31, 2021
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
100
testdata ディレクトリを活用しよう!
uji
1
380
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
160
Green Tea GCの動作を紙芝居にしてみる
uji
1
160
Go Proverbs の紹介
uji
2
190
Go標準の暗号ライブラリメンテナンス戦略
uji
3
740
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
240
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
290
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
800
Other Decks in Technology
See All in Technology
AzureのIaC管理からログ調査まで、随所に役立つSkillsとCustom-Instructions / Boosting IaC and Log Analysis with Skills
aeonpeople
0
270
Arcana: Production-Ready RAG in Elixir @ ElixirConf EU 2026
georgeguimaraes
0
110
AI: Making Admin and Users, Lives Better
kbmsg
0
110
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
1.6k
ServiceNow Knowledge 26 の歩き方
manarobot
0
170
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.4k
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
150
AI時代のガードレールとしてのAPIガバナンス
nagix
0
310
Do Vibe Coding ao LLM em Produção para Busca Agêntica - TDC 2026 - Summit IA - São Paulo
jpbonson
3
150
Keeping Ruby Running on Cygwin
fd0
0
180
AIが自律的に働く時代へ Amazon Quick で実現するAIエージェント紹介
koheiyoshikawa
0
110
はじめての MagicPod生成AI機能 機能紹介から活用方法まで
magicpod
0
120
Featured
See All Featured
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
150
Building AI with AI
inesmontani
PRO
1
910
We Have a Design System, Now What?
morganepeng
55
8.1k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
440
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
340
Become a Pro
speakerdeck
PRO
31
5.9k
Automating Front-end Workflow
addyosmani
1370
200k
A better future with KSS
kneath
240
18k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Technical Leadership for Architectural Decision Making
baasie
3
340
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
110
From π to Pie charts
rasagy
0
170
Transcript
シンプルなモック生成ツール matryer/moq 使ってみた uji @uji_rb
matryer/moq とは • 任意の interface からモック構造体を生成するツール • golang/gomock と扱う課題は同じ
• golang/gomock よりシンプルな仕様
使ってみる • moq -out {生成ファイル名} {ソースディレクトリ} {interface 名} でモックを生成できる
• go generate で生成してみる
使ってみる 生成された
使ってみる • モックを使って テストを書いてみる • 生成された struct に 関数を渡すシンプルな仕様
• HelloFunc が Hello() 呼び出し時に実行される
使ってみる • 関数を定義していない状態で 関数を呼び出すと panic した
golang/gomock と比べて 何が良いのか
生成されたモックが引数、戻り値の型情報を持ってる gomock は interface{} で定義されてしまう 対象 interface の型を確認する必要があり面倒
前処理が無い gomock は モックに gomock.Controller を渡す必要がある テスト毎にこの処理を書く必要があるため面倒
gomock が優れている点 • 引数ごとに処理を定義できる
引数を検証する処理(reflect.DeepEqual等) を書く必要がない
gomock が優れている点 • 関数が呼び出されるべき回数の指定が簡単にできる 最少のみ設定、など結構色々できる (あんまり使ったことない)
moq でもモック関数で処理を実装すればできる
まとめ • moq は引数、戻り値の型情報を持った モックが作られる • gomock は
コントローラーを作成する前処理が必須 対して moq は前処理を書く必要が無い • gomock は引数の検証や、関数呼び出し回数の指定を したい場合楽できる
参考 • moq - gomockを使わないMock生成 (@oinume) https://journal.lampetty.net/entry/moq-instead-of-gomock • Meet Moq:
Easily mock interfaces in Go (Mat Ryer) https://medium.com/@matryer/meet-moq-easily-mock-interfaces-in-go-476444187d10