我正在尝试使用 FactoryGirl、Rspec 和 Capybara 测试登录表单。
我可以通过运行来测试注册表单FactoryGirl.build(:user)
,但我无法登录由 Factory Girl 创建的用户FactoryGirl.create(:user)
。这是我失败的测试:
it "logs in a factory girl user" do
user = FactoryGirl.create(:user)
visit login_path
fill_in "Email", :with => user.email
fill_in "Password", :with => user.password
check "Remember me"
click_button "Log in"
page.should have_content("Logged in!")
end
似乎您应该使用FactoryGirl.build(:user)
来测试注册表单,但是您应该使用FactoryGirl.create(:user)
with 将新用户保存到数据库中,然后使用该用户测试登录过程。但由于某种原因,它无法从数据库中提取该用户并将其插入到表单中。如果我在save_and_open_page
之后添加fill_in "Email" line
,则电子邮件字段仍为空白。
这不是用 Rspec 和 Factory Girl 进行测试的正确方法吗?我想这样做,这样我就可以以普通用户和管理员用户的身份登录,并使用 capybara 在浏览器中测试不同的功能。我是否需要创建一个实用方法,例如signup_and_login_user
我使用的地方,FactoryGirl.build(:user)
然后使用 capybara 浏览注册和登录表单。那么我每次需要在测试中登录用户时都使用此方法?