my forum post입니다.Phoenix 테스트 데이터가 지속되어 테스트를 반복 불가능하게 만듭니다.
필자는 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입니다. 삽입 된 레코드 ID가 1 내 모든 테스트를 실행하기 전에 DB 상태에 대한 내 가정입니다 확인하고 있어요. 각 테스트 후, psql
에서 포스트 그레스의 내용을 확인 자체가 빈 데이터베이스를 반영하는 것을
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