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

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

PHPz
PHPz転載
2024-02-15 17:27:111025ブラウズ

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 回完了することを確認します。

リーリー

https://www.php.cn/link/50d758cc9ab8bb51177b071d370caac2

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

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