我正在设置Rspec来测试我的控制器。我无法通过expects(assigns(:widgets)).to match_array([widget1, widget2])
。
它不断抛出got: nil
。
我已经检查过,并且widget1和widget2在Fabricator中的加载情况良好。我还检查了该用户是否存在并具有管理员权限。只是不将它们分配给集合。
describe "GET index" do
it "returns widgets" do
login_admin
widget1 = Fabricate(:widget)
widget2 = Fabricate(:widget)
get :index
expect(assigns(:widgets)).to match_array([widget1, widget2])
end
end
Devise用户的宏 /spec/support/macros.rb
def login_admin
@request.env["devise.mapping"] = Devise.mappings[:user]
user = Fabricate(:user, admin: true)
sign_in user
end
def login_user
@request.env["devise.mapping"] = Devise.mappings[:user]
user = Fabricate(:user)
sign_in user
end
user_fabricator.rb
Fabricator(:user) do
first_name Faker::Name.first_name
last_name Faker::Name.last_name
email Faker::Internet.email
password Faker::Internet.password
confirmed_at DateTime.now
admin false
end
为什么不分配小部件?
语法已更改吗?