我已经为我的用户模型构建了一个控制器规范,但它通过了,虽然我觉得它应该失败。规范如下:
describe UsersController do
include Devise::TestHelpers
let (:user) do
FactoryGirl.create(:user)
end
let (:other_user) do
FactoryGirl.create(:user)
end
before :each do
@request.env["devise.mapping"] = Devise.mappings[:user]
sign_in user
end
describe "#index" do
it "can GET 'index'" do
get :index
response.should be_success
end
it "populates a list of users" do
get :index
expect(assigns(:users)).to eq([user])
end
end
end
“expect(assigns(:users))。to eq([user])”行传递,但我觉得它应该失败。毕竟,我在顶部创建了两个用户(user和other_user)。我显然误解了发生的事情,有人可以解释一下吗?
答案 0 :(得分:7)
let
懒惰;直到第一次调用它时才会创建用户(此时结果被记忆)。由于您致电user
但未other_user
,因此实际上只创建了第一个用户,并且规范通过了。
如果您想进行急切评估,请使用let!
,或确保在某个地方致电other_user
。