![見出し画像](https://assets.st-note.com/production/uploads/images/137250268/rectangle_large_type_2_66602a8b4006ac95221fa0f52537fed2.png?width=1200)
golang testify使い方と注意点について
今回はGo言語のtestifyについて解説していきます。
testify
testifyはGo言語でのテストを強化するためのライブラリで、より豊富なアサーション機能やモック機能を提供しています。
testifyを使用することでGoの標準テストパッケージよりも表現力豊かで読みやすいテストコードが書けるようになります。
testifyの使い方
testifyには主にアサーション、モック、スイートの3つの機能があります。
アサーションの使用
testify/assertパッケージを使用して、テストの条件を簡潔に表現します。
package main
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCalculation(t *testing.T) {
result := SomeCalculationFunction(2, 2)
assert.Equal(t, 4, result, "they should be equal")
}
SomeCalculationFunctionが2と2の引数で4を返すことを期待しています。
もし期待値と実際の結果が異なる場合、テストは失敗し、エラーメッセージが表示されます。
モックの使用
testify/mockパッケージを使うことで、依存するコンポーネントのモックを作成し、特定のメソッドが期待通りに呼ばれるかを検証できます。
type MyMockedObject struct {
mock.Mock
}
func (m *MyMockedObject) DoSomething(number int) bool {
args := m.Called(number)
return args.Bool(0)
}
func TestDoSomething(t *testing.T) {
testObj := new(MyMockedObject)
testObj.On("DoSomething", 123).Return(true)
testResult := testObj.DoSomething(123)
assert.True(t, testResult)
testObj.AssertExpectations(t)
}
DoSomethingメソッドが期待される引数123で呼び出され、trueを返すかを検証しています。
テストスイートの使用
testify/suiteパッケージを使用して、テストケースを整理し、共通のセットアップとティアダウンロジックを共有します。
type ExampleTestSuite struct {
suite.Suite
VariableThatShouldBeAvailableInAllTests string
}
func (suite *ExampleTestSuite) SetupTest() {
suite.VariableThatShouldBeAvailableInAllTests = "Initialize me"
}
func (suite *ExampleTestSuite) TestExample() {
assert.Equal(suite.T(), "Initialize me", suite.VariableThatShouldBeAvailableInAllTests)
}
func TestExampleTestSuite(t *testing.T) {
suite.Run(t, new(ExampleTestSuite))
}
testifyの注意点
過剰なモックの使用
モックを過剰に使用すると、実際の挙動から離れたテストが作成される可能性があります。
必要なところだけにモックを使用し、実際のコンポーネントとのインテグレーションテストも行うバランスが重要です。
golangをもっと詳しくなりたい方に
初めてのGo言語
![](https://assets.st-note.com/img/1713077164648-tVBpEHvhsf.png?width=1200)
Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。
詳解Go言語Webアプリケーション開発
![](https://assets.st-note.com/img/1713077164683-gugxWiPwnS.png?width=1200)
こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。
以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。
【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)
まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。
この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。
現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発
個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。
以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。
※本ページではアフィリエイトリンク(PR)が含まれています