如何使用RSpec和FactoryGirl进行简单的登录



我刚开始使用factory_girl,我尝试使用:

user = FactoryGirl.create(:user)

但这似乎行不通。 这是我的代码:

RSpec.feature "Send a message" do
scenario "Staff can send a message" do
visit "/"
group = Group.create!(name: "Group A")
user = FactoryGirl.create(:user)
fill_in "Email", with: "staff@example.com"
fill_in "Password", with: "password"
click_button "Sign in"
person = Person.create!(groups: [group], phone_number: "+161655555555")
message = Message.create(body: "Test Message", group_ids: [group.id])
fill_in "Enter a Message:", with: "Test Message"
check "message_group_#{group.id}"
click_button "Send Message"
expect(page).to have_content("Messages on their way!")
expect(page).to_not have_content("Body can't be blank")
expect(page).to_not have_content("Group ids can't be blank")
end

这是我的工厂:

FactoryGirl.define do
 factory :user do
  email "cam@example.com"
  password "password"
 end
end

简单吧?可能出现什么问题?

user = FactoryGirl.create(:user)
fill_in "Email", with: user.email
fill_in "Password", with: user.password

此外,如果您使用 devise,则可以将下一行添加到spec/support/warden.rb并使用方法login_as(user)而不是提交登录表单。

RSpec.configure do |config|
  config.include Warden::Test::Helpers, type: :feature
  config.include Warden::Test::Helpers, type: :request
  config.before :suite do
    Warden.test_mode!
  end
  config.after :each do
    Warden.test_reset!
  end
end

最新更新