Я настраиваю 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
Почему виджеты не назначаются?
Изменился ли синтаксис?