Mat*_*rez 4 rspec ruby-on-rails capybara ruby-on-rails-4
可以来给我解释一下为什么必须使用 let !而不是在这种情况下让?只有当我包含 ! 时,测试才会通过。我以为我明白 let 会在该块中的每个“it”语句之前自动执行,但显然情况并非如此。
describe Artist do
before do
@artist = Artist.new(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
subject { @artist }
describe "virtual requests" do
let!(:virtual1) { FactoryGirl.create(:virtual_request, artist: @artist ) }
let!(:virtual2) { FactoryGirl.create(:virtual_request, artist: @artist ) }
it "should be multiple" do
@artist.virtual_requests.count.should == 2
end
end
end
Run Code Online (Sandbox Code Playgroud)
因为let懒。如果你不调用它,它不会做任何事情。
相反,它let!是活动的,并且会在您经过时执行其块内的代码。
在您的代码中,如果您替换let!为let,您的测试将不会通过。
原因是你没有调用:virtual1和:virtual2之后,所以块里面的代码不会被执行,并且记录不会被 FactoryGirl 创建。
| 归档时间: |
|
| 查看次数: |
1416 次 |
| 最近记录: |