使用Test :: Unit和shoulda,我想编写一个期望清晰的测试,所以我想出了这个:
context "logged in as seller" do
setup do
login @seller
visit offer_path(@seller_offer)
end
should "not see feedback" do
assert has_no_selector?("#feedback")
end
should "see 'cancel offer' button" do
assert has_selector?("#cancel_offer_button")
end
should "see 'comment' button" do
assert has_selector?("#comment_button")
end
should "not see 'accept offer' button" do
assert has_no_selector?("#accept")
end
end
问题是,在每个“应该”阻止之前,重新执行设置 - 意味着两个页面请求(一个用于登录助手,另一个用于调用“访问”)。
我试过
context "logged in as seller" do
login @seller
visit offer_path(@seller_offer)
should ...
但这似乎不起作用......显然我能做到:
context "logged in as seller" do
should "have desired results" do
login @seller
visit offer_path(@seller_offer)
# should see 'cancel offer' button
assert has_selector?("#cancel_offer_button")
# should see 'comment' button"
assert has_selector?("#comment_button")
etc..
但这并不是我想要的。
-Patrick
答案 0 :(得分:1)
对于初学者:如果你希望你的测试只测试一件事,就像它应该的那样,没有解决这个问题的方法,你已经做了正确的事。
但是,还有其他方法:在集成测试中,我通常会执行以下操作,而不是进行完整集成测试,并测试视图(页面上每个元素的外观):
希望这有帮助。