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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
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
110
testdata ディレクトリを活用しよう!
uji
1
420
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
170
Green Tea GCの動作を紙芝居にしてみる
uji
1
190
Go Proverbs の紹介
uji
2
200
Go標準の暗号ライブラリメンテナンス戦略
uji
3
750
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
240
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
300
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
800
Other Decks in Technology
See All in Technology
Strands Agents超入門
kintotechdev
1
140
大学生が本気でDatabricksを活用してDiscordサークルをデータ駆動させてみた
phantomjuju
1
280
はじめてのDatadog
kairim0
0
230
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
Spring AI × MCP 入門〜AIエージェントへのツール公開、境界設計から始める最小構成 〜
yuyamiyamoto
0
180
人が担う「価値」とは?これからの「QA」とは / Human Value and the Future of Quality Assurance
bitkey
PRO
0
140
Unlocking the Apps
pimterry
0
110
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
140
JJUG CCC 2026 Spring AI時代の開発こそ標準化を武器に! ― 方式・プロセス・プラットフォームの標準化
s27watanabe
2
620
ビジュアルプログラミングIoTLT vol.23
1ftseabass
PRO
0
160
GitHub Copilot CLIでWebアクセシビリティを改善した話
tomokusaba
0
130
Javaコミュニティをもっと楽しむための9箇条
takasyou
0
610
Featured
See All Featured
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
280
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
240
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
350
Information Architects: The Missing Link in Design Systems
soysaucechin
0
940
Java REST API Framework Comparison - PWX 2021
mraible
34
9.3k
How to make the Groovebox
asonas
2
2.2k
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
310
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Building Applications with DynamoDB
mza
96
7.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
270
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
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