ホームページ > バックエンド開発 > Golang > 1 つのインスタンス オブジェクトをすべてのテストで使用できるようにするにはどうすればよいですか?

1 つのインスタンス オブジェクトをすべてのテストで使用できるようにするにはどうすればよいですか?

PHPz
リリース: 2024-02-15 17:27:11
転載
1100 人が閲覧しました

1 つのインスタンス オブジェクトをすべてのテストで使用できるようにするにはどうすればよいですか?

php エディターの Yuzai が、インスタンス オブジェクトをすべてのテストで使用できるようにする方法を紹介します。単体テストを実行するとき、多くの場合、インスタンス オブジェクトを作成し、それを複数のテスト ケースで再利用する必要があります。繰り返しオブジェクトを作成する手間を避けるために、テストの開始前にインスタンス オブジェクトを作成し、setUp() メソッドを使用してクラスのプロパティとして保存できます。このようにして、すべてのテスト メソッドでこのインスタンス オブジェクトにアクセスできるため、コードの再利用性とテストの効率が向上します。次に、具体的な実装方法を見ていきましょう。

質問内容

httpサービスのコンポーネントテストを書いています。いくつかの便利な構造と共有関数 (主に「http 呼び出しの実行」と「json 構造の比較」) を含むテスト ランナー クラスがあります。テスト ランナー クラスには、http 呼び出しを送信するために envvars から抽出されたドメインが必要です。 http 呼び出しを行うたびに環境変数からドメインを取得するのではなく、ドメインを一度解析してテスト ランナー クラスのインスタンスに設定し、そのインスタンスをすべてのテスト関数で使用できるようにしたいと考えています。

テスト関数の予期されるシグネチャが func TestXxx(t *testing.T) {...} であると仮定します。このインスタンスをテストで使用できるようにするにはどうすればよいですか?

コード:

  • main.go - TestMain を使用して envvars からドメインを取得し、テスト ランナー クラスのインスタンスを作成します
  • testrunner.go - http 呼び出しと結果の検証を容易にするヘルパー クラス
  • tests.go - 実行されている実際のテスト。 golang のテスト ライブラリを使用するように変換していますが、現在パラメータ (テスト ランナー インスタンス) が必要であることがわかります。
解決策

パッケージ レベルの変数を使用して値を保存します。アクセサ関数の値を初期化します。 sync.Once を使用して、初期化が 1 回完了することを確認します。

リーリー

//m.sbmmt.com/link/50d758cc9ab8bb51177b071d370caac2

以上が1 つのインスタンス オブジェクトをすべてのテストで使用できるようにするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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