Niedawno natknąłem tej kwestii podczas migracji niektóre request
testy nad do feature
formacie testowym dla Kapibara 2.1, a przełączanie składnię testowania tam od should
opartych na expect
opartym. Aby korzystać z oryginalnego pytanie jako przykład, miałem kod jak:
subject { -> { post("/api/users", parameters) } }
it { should change(User,:count).by(1) }
it { should_not change(ActionMailer::Base, :deliveries) }
dostosowanie niniejszej nad do expect
składni w teście scenario
przedstawił kilka problemów i dała tego rodzaju (pracy) clunkiness (Przepraszam, nie duży wentylator jawnie zagnieżdżone lambda
S/expect
-ów):
expect(-> { expect(post("/api/users", parameters)).to change(User,:count).by(1) }
).to_not change(ActionMailer::Base, :deliveries)
Istnieje wiele rozwiązań tego problemu w this StackOverflow thread który próbowałem i udało się, ale to, co skończyło się robi po prostu śledzić oryginalny format nieco i podzielić się każde oświadczenie w swoim własnym scenario
; coś takiego:
feature "Add users via API" do
given(:posting_parameters_to_api) { -> { post("/api/users", parameters) } }
scenario "foo" do
expect(posting_parameters_to_api).to change(User,:count).by(1)
end
scenario "bar" do
expect(posting_parameters_to_api).to_not change(ActionMailer::Base,
:deliveries)
end
end
więcej komunikatów niż oryginalny request
ciemno, ale zasadniczo pracuje w taki sam sposób. Realizacja prawdopodobnie sprowadzi się do osobistego gustu.
szukałem tego sam – prusswan