Last active
July 21, 2020 04:22
-
-
Save utamori/cce0614598635750f79f73b7fc1b6a75 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package yours | |
| import ( | |
| "testing" | |
| "github.com/stretchr/testify/mock" | |
| ) | |
| /* | |
| テストオブジェクト | |
| */ | |
| // MyMockedObject はインターフェイスを実装したモックされたオブジェクトです。 | |
| // これは、私がテストしているコードが依存しているオブジェクトを記述しています。 | |
| type MyMockedObject struct { | |
| mock.Mock | |
| } | |
| // DoSomething は、いくつかのインターフェイスを実装した MyMockedObject のメソッドです。 | |
| // と、アクティビティを記録するだけで、Mockオブジェクトが指示したものを返します。 | |
| // | |
| // 実際のオブジェクトでは、このメソッドは何か便利なことをするでしょうが、 | |
| // これはモックされたオブジェクトなので、これをスタブアウトします。 | |
| // 注: このメソッドはここではテストされていませんが、このオブジェクトを使用するコードはテストされています。 | |
| func (m *MyMockedObject) DoSomething(number int) (bool, error) { | |
| args := m.Called(number) | |
| return args.Bool(0), args.Error(1) | |
| } | |
| /* | |
| 実際のテスト機能関数 | |
| */ | |
| // TestSomething は、テストオブジェクトを使って、 | |
| // テストしているターゲットコードについてアサーションを行う方法の例です。 | |
| func TestSomething(t *testing.T) { | |
| // テストオブジェクトのインスタンスを作成します | |
| testObj := new(MyMockedObject) | |
| // 期待値を設定する | |
| testObj.On("DoSomething", 123).Return(true, nil) | |
| // テストするコードを呼び出す | |
| targetFuncThatDoesSomethingWithObj(testObj) | |
| // assertする | |
| testObj.AssertExpectations(t) | |
| } | |
| // TestSomethingElse は、テストオブジェクトを使用して、 | |
| // テストしているターゲットコードについてアサーションを行う方法の二番目の例です。 | |
| // 今回はプレースホルダを使用します。プレースホルダーは、通常は動的に生成されるデータで、 | |
| // 事前に予測できない場合に使用されることがあります(例えば、時間的に左右されるハッシュが含まれている場合など)。 | |
| func TestSomethingElse(t *testing.T) { | |
| // テストオブジェクトのインスタンスを作成します | |
| testObj := new(MyMockedObject) | |
| // 引数リストのプレースホルダで期待値を設定します。 | |
| testObj.On("DoSomething", mock.Anything).Return(true, nil) | |
| // テストしているコードを呼び出す | |
| targetFuncThatDoesSomethingWithObj(testObj) | |
| // アサーションします | |
| testObj.AssertExpectations(t) | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment