我正在使用minitest与工厂女孩和水豚进行集成测试。水豚正常工作时我不出厂用户女孩创建一个用户对象,像这样:水豚不与工厂女孩合作
it "logs in a user successfully" do
visit signup_path
fill_in "Email", :with => "[email protected]"
fill_in "Password", :with => "rockawaybeach"
fill_in "Password confirmation", :with => "rockawaybeach"
click_button "Create User"
current_path == "/"
page.text.must_include "Signed up!"
visit login_path
fill_in "Email", :with => "[email protected]"
fill_in "Password", :with => "rockawaybeach"
check "Remember me"
click_button "Log in"
current_path == "/dashboard"
page.text.must_include "Logged in!"
page.text.must_include "Your Dashboard"
end
但只要我尝试创建与工厂女孩奇怪的事情开始发生,用户如访问方法和click_button方法停止工作。举例来说,似乎没有要什么不对这个测试:
require "test_helper"
describe "Password resets" do
before(:each) do
@user = FactoryGirl.create(:user)
end
it "emails user when requesting password reset" do
visit login_path
click_link "password"
fill_in "Email", :with => user.email
click_button "Reset my password"
end
end
这是我的factories.rb:
FactoryGirl.define do
factory :user do |f|
f.sequence(:email) { |n| "foo#{n}@example.com" }
f.password "secret"
f.password_confirmation "secret"
end
end
下面是我得到实际的错误:
est_0001_emails user when requesting password reset 0:00:01.624 ERROR
undefined local variable or method `login_path' for #<#<Class:0x007fc2db48d820>:0x007fc2df337e40>
但如果我删除@user = FactoryGirl.create(:user)
是日,visit login_path
工作正常是水豚的错误?或者我在这里做错了什么?
如果使用let(:user){Factory(:user)}替换测试中的before块,会发生什么情况? – shicholas
得到相同的错误。似乎水豚只是没有提交表格。 –
这行是一个问题吗? 'fill_in“Email”,:with => user.email'它不应该是'@ user.email'吗? –