Rspec,Devise控制器测试

时间:2018-09-09 17:39:44

标签: devise ruby-on-rails-5 tdd rspec-rails devise-confirmable

我正在设置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

为什么不分配小部件?

语法已更改吗?

0 个答案:

没有答案