Ich benutze Minitest mit Fabrik Mädchen und Capybara für Integrationstests. Capybara funktioniert gut, wenn ich nicht vom Benutzer Fabrik Mädchen tut ein Benutzerobjekt, wie diese zu erstellen:Capybara arbeitet nicht mit Fabrik Mädchen
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
Aber sobald ich versuche, einen Benutzer mit Fabrik Mädchen seltsame Dinge passiert starten, wie der Besuch Methode zu erstellen und click_button-Methoden funktionieren nicht mehr. Zum Beispiel, es scheint nicht zu etwas falsch mit diesem Test zu sein:
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
Und hier ist mein 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
Hier ist der tatsächliche Fehler, die ich erhalte:
est_0001_emails user when requesting password reset 0:00:01.624 ERROR
undefined local variable or method `login_path' for #<#<Class:0x007fc2db48d820>:0x007fc2df337e40>
Aber visit login_path
funktioniert gut, wenn ich entfernen @user = FactoryGirl.create(:user)
Ist th ist ein Fehler mit Capybara? Oder mache ich hier etwas falsch?
Was passiert, wenn Sie den Vorher-Block in Ihrem Test durch let (: user) {Factory (: user)} ersetzen? – shicholas
Das wird der gleiche Fehler. Es scheint, dass Capybara das Formular einfach nicht einreicht. –
Ist diese Linie ein Problem? 'fill_in" Email ",: mit => user.email' Sollte es nicht' @ user.email' sein? –