3

おはようございます、

私の Elixir プロジェクトには、必要なデータをデータベースに挿入する、特に高価なデータベース セットアップ コードがいくつかあります。

@tag :insert_my_data私は現在、このデータがコンストラクトを介して必要なテストの前に挿入されるようにテストを行っています。テスト ヘルパーに次のようなコードがあります。

setup tags do
  if tags[:insert_my_data] do
    # Run code here
  end
end

これの問題は、このコードを何百回も実行しなければならず、遅いことです。

を呼び出す前に、コードが一度自動的にmix test実行され、Ecto が提供するトランザクション ロールバック機能が (空のデータベースではなく) この既知の状態にリセットされると、よりうまく機能します。

どうすればこれを達成できますか?

ありがとう!

4

1 に答える 1

0

これは古い質問であることは承知していますが、良い質問であり、今でも Web 検索結果に表示されます。

テストが実行される前にコールバックを実行する別の方法は、それをtest/test_helper.exsファイルに入れることです。デフォルトでは、

ExUnit.start()

mix testそして、テスト実行の前に、実行するだけであるか、テストのサブセットを対象としているかに関係なく、一度実行されmix test test/path/to/file_test.exs:42ます.

テストの実行のみを対象としている場合は、エイリアスを変更するよりもクリーンな気がします。

于 2019-02-20T12:27:48.567 に答える