ホームページ  >  記事  >  バックエンド開発  >  Golang 単体テストにおける単純なエラーの問題

Golang 単体テストにおける単純なエラーの問題

WBOY
WBOY転載
2024-02-13 20:51:16556ブラウズ

Golang 单元测试的简单错误问题

Golang の単体テストは、コードの品質と機能の正確さを保証するための重要な手段ですが、実際にはいくつかの単純なエラーが発生することがよくあります。この記事では、PHP エディター Zimo がよくあるエラーの問題とその解決方法を紹介します。これらの問題の解決策を学ぶことで、誰もが Golang の単体テストをよりスムーズに実行し、コードの品質と信頼性を向上させることができると思います。

質問内容

この関数をテストしようとして問題が発生しましたが、内部でエラーが発生しました。以下は、エラーを返さずに応答jsonを送信するresponsejson関数です。

リーリー

以下は私の単体テスト コードです。これは、JSON に対するライターの応答をエラーなしで正常にテストするモック レスポンスライターを作成します。 responsejson() 関数でエラーの種類を返していないので、以下のように test_responsejson 関数でテストするにはどうすればよいですか?

リーリー

さらに、log.println() 組み込み関数の実際のログ出力を生成する関数を作成しました。 log.println() 関数は組み込み関数であり、失敗する可能性は低いことはわかっています。ただし、単体テストで 100% のカバレッジを達成したいと考えています。助けてください!ありがとう:)###

func responsejson(w http.responsewriter, code int, message string) {
    jsonstatus := struct {
        code int `json:"code"`
        message string `json:"message"`
    }{
        message: message,
        code: code,
    }

    bs, err := json.marshal(jsonstatus);

    if err != nil {
        log.println("error in marshal json in responsejson: ", err)
        str := "internal server error. please contact the system administrator."
        io.writestring(w, str);
        return 
    } else {
        io.writestring(w, string(bs));
        return
    }
    
}

Solution

簡単に言えば、以下に示すように

responsejson 関数のテスト ケースを作成できます。 リーリー

bs からエラーを取得できません。err := json.marshal(jsonstatus)json.marshal この関数は 2 種類のエラーを返す可能性があります。

  1. unsupportedtypeerror (例: チャネル、複合値、関数値)
  2. unsupportedvalueerror (例: 循環データ構造)
値を解析して上記のエラーのいずれかを生成できませんでした。サポートされている値とサポートされている型を使用して構造体を解析しています。したがって、100% カバレッジのテストを作成することはできません。

以上がGolang 単体テストにおける単純なエラーの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。