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 種類のエラーを返す可能性があります。
(例: チャネル、複合値、関数値)
(例: 循環データ構造)
以上がGolang 単体テストにおける単純なエラーの問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。