0
これはmy forum postの複製であることに注意してください。フェニックスのテストデータは持続してテストを再現不可能にします
私はPhoenix(1.2.1)を使用しており、テスト環境に問題があります。問題は、テスト全体に挿入(更新、削除など)されているデータがテストデータベースに保持されているために、テストが繰り返されないことです。
最初の実行:
[email protected]:/mnt/sidecar_api# mix test
................................
Finished in 2.2 seconds
32 tests, 0 failures
Randomized with seed 180820
セカンドラン:
[email protected]:/mnt/sidecar_api# mix test
...........................
1) test user signup with POST /v1/users with valid attributes (SidecarApi.V1.UserControllerTest)
test/controllers/v1/user_controller_test.exs:15
Assertion with == failed
code: response == expected
lhs: %{"jsonapi" => %{"version" => "1.0"}, "data" => %{"attributes" => %{"first-name" => "Juan", "last-name" => "Dela Cruz", "primary-email" => "[email protected]", "primary-mobile-number" => "639123456789", "username" => "jdelacruz"}, "type" => "user", "id" => "2"}}
rhs: %{"jsonapi" => %{"version" => "1.0"}, "data" => %{"attributes" => %{"first-name" => "Juan", "last-name" => "Dela Cruz", "primary-email" => "[email protected]", "primary-mobile-number" => "639123456789", "username" => "jdelacruz"}, "type" => "user", "id" => "1"}}
stacktrace:
test/controllers/v1/user_controller_test.exs:36: (test)
....
Finished in 2.3 seconds
32 tests, 1 failure
Randomized with seed 556822
これらのインスタンスでのみ関連する情報がオブジェクトIDです。私はすべての私のテストの実行前にDBの状態で私の前提であるID 1を挿入されたレコードが持っているかどうかチェックしています。各テストの後、psql
からのpostgresの内容を確認し、それ自体が空のデータベースを反映していることを
use Mix.Config
config :sidecar_api, SidecarApi.Endpoint,
http: [port: 4001],
server: false
config :logger, level: :warn
config :sidecar_api, SidecarApi.Repo,
adapter: Ecto.Adapters.Postgres,
username: "sidecar",
password: "sidecardb",
database: "sidecar_test",
hostname: "sidecar-db-main",
pool: Ecto.Adapters.SQL.Sandbox
とtest_helper.exs
ExUnit.start
Ecto.Adapters.SQL.Sandbox.mode(SidecarApi.Repo, :manual)
注:
は、ここに私のtest.exs
です。開発環境とテスト環境の両方今、私はどこを見るのか混乱しています。
sidecar_dev=# select * from users;
id | username | password | first_name | last_name | inserted_at | updated_at
----+----------+----------+------------+-----------+-------------+------------
(0 rows)
sidecar_test=# select * from users;
id | username | password | first_name | last_name | inserted_at | updated_at
----+----------+----------+------------+-----------+-------------+------------
(0 rows)
ありがとうございます!
異なることに注意してください、あなたは、あなたのテストは異なる順序でたびに実行されているので、これではありませんか? –
より重要なスニペット(テストなど)を付けることができますか?副作用関数のテストを実行する場合、それらを非同期で使用しないことを覚えていますか? – PatNowak