0
나는 컨트롤러에서 비슷한 테스트를하고 테스트 블록에서는 setup_all
인서트를 사용할 수 있습니다. 여기에 내 모델에서 똑같은 것을 허용하려고 노력하고 있으며, 제대로 작동하지 않는 것처럼 보입니다. 내가 그것을 실행하면setup_all 블록의 데이터베이스에 삽입 된 개체가 테스트 블록에 나타나지 않는 이유는 무엇입니까?
defmodule Faq.QuestionTest do
use Faq.ModelCase
alias Faq.Question
setup_all do
:ok = Ecto.Adapters.SQL.Sandbox.checkout(Repo)
Question.changeset(%Question{}, %{question: "Unanswered", answer: nil}) |> Repo.insert!
Question.changeset(%Question{}, %{question: "Answered", answer: "My published answer", published_at: Ecto.DateTime.utc(:usec)}) |> Repo.insert!
published_count = Question |> Question.published |> Repo.all |> Enum.count
assert 1 == published_count
IO.puts "SETUP_ALL"
:ok
end
describe "scopes" do
test "answered", meta do
published_count = Question |> Question.published |> Repo.all |> Enum.count
assert 1 == published_count
end
end
end
나는 다음과 같은 오류가 있습니다 : 다음과 같이
나는 시험이 난에서와 내가 같은 검증을 setup_all
블록 이제
$ mix test test/models/question_test.exs
warning: variable meta is unused
test/models/question_test.exs:21
SETUP_ALL
1) test scopes answered (Faq.QuestionTest)
test/models/question_test.exs:21
Assertion with == failed
code: 1 == published_count
lhs: 1
rhs: 0
stacktrace:
test/models/question_test.exs:23: (test)
Finished in 0.09 seconds
1 test, 1 failure
을 내 test
블록. 테스트에서 실패했지만 setup_all
을 전달한 이유는 무엇입니까?
'setup_all' 대신'setup'이 올바르게 작동합니까? – Dogbert