Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
シンプルなモック生成ツール matryer/moq 使ってみた
Search
uji
May 31, 2021
Technology
700
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
シンプルなモック生成ツール matryer/moq 使ってみた
uji
May 31, 2021
Transcript
13 slides
シンプルなモック生成ツール 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
More Decks by uji
See All by uji
【Go ハンズオン】Windows / Linux コマンドを Go で再現
uji
1
130
testdata ディレクトリを活用しよう!
uji
1
520
MCP 公式の Go SDK で QA データ登録アシスタントを作ってみた
uji
0
200
Green Tea GCの動作を紙芝居にしてみる
uji
1
240
Go Proverbs の紹介
uji
2
250
Go標準の暗号ライブラリメンテナンス戦略
uji
3
800
NOT A HOTEL TECH TALK ーSOFTWARE 3.0への道筋ー NEXT Web3 (2024-08-07)
uji
0
290
マネーフォワード ME ブロックチェーン連携機能におけるGoの活用方法
uji
1
340
Goはブロックチェーン領域でなぜ使われ、どのように活躍しているのか
uji
1
840
Other Decks in Technology
See All in Technology
Frontier Teams — Amazon は AI で「開発のやり方」をどう変えたのか
kmotohas
0
220
JAWS_FESTA2026_オンプレ-AWS間プロキシサーバの移行_性能_障害対応で得た実践ノウハウ_高島一晃.pdf
tkazuaki0820
1
110
Kiro を使うコツ (頼み方、覚えさせ方、任せ方) | 目指せ Kiro マスター 09
inariku
PRO
3
150
Kiro Crew の Bot (続く役目を任せる窓口) | 目指せ Kiro マスター 12
inariku
PRO
2
370
Kiro アップデート 2026 年 11 月号 (11 月 8 日時点) | 目指せ Kiro マスター アップデート編
inariku
PRO
2
110
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
17
120k
ゼロから作るWebアプリの新定番!?Amplify Gen 2 × AWS Blocksで実現する「開発速度とRDBの柔軟性のいいとこ取り」
amixedcolor
1
240
Linuxネットワークスタック進化の軌跡: 過去10年の歩みと最新トレンド
orimanabu
2
520
田んぼから始まる挑戦 〜新米農家の1年目〜
miu_crescent
PRO
0
140
田んぼの見回りをIoTで減らしたい!水位監視から電池駆動カメラまでの試行錯誤
itosoft
1
120
ぼくのClaude Codeの使い方
falken
PRO
1
4.5k
GCASアップデート(202607-202610)
techniczna
1
310
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
7.1k
What does AI have to do with Human Rights?
axbom
PRO
1
2.5k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Mobile First: as difficult as doing things right
swwweet
225
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.4k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
400
Optimising Largest Contentful Paint
csswizardry
37
4k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.9k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.8k
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k