ホームページ > バックエンド開発 > Golang > アサーション: モック: メソッド呼び出しが予期せぬものであったため、何を返せばよいかわかりません Go で単体テストを作成中にエラーが発生しました

アサーション: モック: メソッド呼び出しが予期せぬものであったため、何を返せばよいかわかりません Go で単体テストを作成中にエラーが発生しました

王林
リリース: 2024-02-10 09:00:18
転載
541 人が閲覧しました

断言:模拟:我不知道要返回什么,因为方法调用是意外的 在 Go 中编写单元测试时出错

この記事では、php エディターの Xiaoxin が、Go 言語で単体テストを作成するときに発生する一般的なエラー、つまりアサーション エラーについて紹介します。単体テストを作成するときに、戻り値を決定できない状況に遭遇することがあります。これにより、予期しないメソッド呼び出しエラーが発生する可能性があります。この記事では、アサーション エラーを適切に処理し、単体テストの精度と信頼性を確保するために役立つ、この問題の原因と解決策について説明します。

質問内容

Go で testify を使用して、サービス メソッドの単体テストを作成します。更新メソッドを除くすべてのメソッドは正常に動作します。更新中にメソッド内で, 更新メソッドで同じサービスの別のメソッド (「getbyid」) を呼び出します。

サービスに更新メソッドを実装します:

リーリー

mockrepo 更新方法:

リーリー

テスト実装:

リーリー

ここでテストを実行すると、次のエラーが表示されます:

リーリー

テスト関数の実装で mock.on("getbyid") を呼び出す前後に .on("update") を呼び出してみましたが、機能せず、モックリポの更新機能も変更しましたが、機能しませんでした。

解決策

問題の解決をお手伝いさせていただきます。関連するコードを投稿するためだけに、いくつかの簡略化を加えてリポジトリをコピーしました。あなたの解決策が間違っていなければ、基盤となるパッケージ (teamrepo) によって提供されるいくつかのメソッドを呼び出すサービス (teamservice) があります。 teamservice 構造の update メソッドをテストしたいと考えています。確認した後、最初にコードを示し、次に各ファイルについて説明します。

リポ/repo.go リーリー

このファイルには、シミュレートするメソッドがあります。メソッドは、

getbyidupdate です。明らかにこれは実際のコードではありませんが、現時点ではそれは問題ではありません。

サービス/service.go リーリー

ここでは、テスト コード内で、テスト対象システムとなるサービス (

sut) を確認できます。依存関係の注入では、インターフェイス teamrepointerface を通じて注入された repo パッケージによって提供される機能を利用します。

services/service_test.go リーリー

コード内には、何が起こっているかを詳しく説明するコメントがいくつかあります。ご想像のとおり、問題は、コード内にこの呼び出しが欠落していることです。

repomock.on("getbyid", 1).return(repo.team{id: 1,teamownerid: 1, name: "test"}, nil).times(1)

私のソリューションを実行すれば、あなたにとってもうまくいくはずです。

これで問題が解決した場合、または他にご質問がある場合は、お知らせください。

以上がアサーション: モック: メソッド呼び出しが予期せぬものであったため、何を返せばよいかわかりません Go で単体テストを作成中にエラーが発生しましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート