この記事では、php エディターの Xiaoxin が、Go 言語で単体テストを作成するときに発生する一般的なエラー、つまりアサーション エラーについて紹介します。単体テストを作成するときに、戻り値を決定できない状況に遭遇することがあります。これにより、予期しないメソッド呼び出しエラーが発生する可能性があります。この記事では、アサーション エラーを適切に処理し、単体テストの精度と信頼性を確保するために役立つ、この問題の原因と解決策について説明します。
Go で testify
を使用して、サービス メソッドの単体テストを作成します。更新メソッドを除くすべてのメソッドは正常に動作します。更新中にメソッド内で, 更新メソッドで同じサービスの別のメソッド (「getbyid」) を呼び出します。
サービスに更新メソッドを実装します:
リーリーmockrepo 更新方法:
リーリーテスト実装:
リーリーここでテストを実行すると、次のエラーが表示されます:
リーリーテスト関数の実装で mock.on("getbyid")
を呼び出す前後に .on("update")
を呼び出してみましたが、機能せず、モックリポの更新機能も変更しましたが、機能しませんでした。
問題の解決をお手伝いさせていただきます。関連するコードを投稿するためだけに、いくつかの簡略化を加えてリポジトリをコピーしました。あなたの解決策が間違っていなければ、基盤となるパッケージ (teamrepo
) によって提供されるいくつかのメソッドを呼び出すサービス (teamservice
) があります。 teamservice
構造の update
メソッドをテストしたいと考えています。確認した後、最初にコードを示し、次に各ファイルについて説明します。
リーリー
getbyid と
update です。明らかにこれは実際のコードではありませんが、現時点ではそれは問題ではありません。
リーリー
sut) を確認できます。依存関係の注入では、インターフェイス
teamrepointerface を通じて注入された
repo パッケージによって提供される機能を利用します。
リーリー
私のソリューションを実行すれば、あなたにとってもうまくいくはずです。
以上がアサーション: モック: メソッド呼び出しが予期せぬものであったため、何を返せばよいかわかりません Go で単体テストを作成中にエラーが発生しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。