Correction. Il y avait un bug dans Rails. Voir https://github.com/rails/rails/issues/2333Rails 3.1, Bogue usine fille
J'ai un problème avec Rails Factory Girl et Rails 3.1.0.rc5
Quand je fais plus d'une fois user = FactoryGirl.create(:user)
j'ai une erreur. Je peux créer autant d'utilisateurs que je veux en utilisant Factory mais seulement dans la console rails.
Tests:
require 'spec_helper'
describe "Users" do
describe "signin" do
it "should sign in a user" do
visit root_path
user = FactoryGirl.create(:user)
within("div#sign_in_form") do
fill_in "Name", with: user.name
fill_in "Password", with: user.password
end
click_button "Sign in"
current_path.should eq(user_path(user))
page.should have_content("signed in")
end
it "should not show new user form on /" do
user = FactoryGirl.create(:user)
visit root_path
page.should_not have_css("div#new_user_form")
end
end
end
factories.rb
FactoryGirl.define do
factory :user do |f|
f.sequence(:name) { |n| "john#{n}" }
f.fullname 'Doe'
f.sequence(:email) { |n| "test#{n}@example.com" }
f.password 'foobar'
end
end
modèle
/user.rb
class User < ActiveRecord::Base
has_secure_password
attr_accessible :name, :fullname, :email, :password
before_create { generate_token(:auth_token) }
email_regex = /\A[\w+\-.][email protected][a-z\d\-.]+\.[a-z]+\z/i
validates :name, presence: true, length: { maximum: 20 },
uniqueness: { case_sensitive: false }
validates :fullname, presence: true, length: { maximum: 30 }
validates :email, format: { with: email_regex },
uniqueness: { case_sensitive: false }, length: { maximum: 30 }
validates :password, length: { in: 5..25 }
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
end
User.exists?(column => self[column])
la cause du problème.
C'est bizarre, et la fixation du problème de base serait mise ter, mais une chose que vous voudrez peut-être faire (une bonne pratique en général) est de créer votre utilisateur dans une méthode 'setup'. Il devient alors disponible pour tous les tests en cours. – MrDanA
Est-ce que c'est réglé maintenant? S'il vous plaît accepter une réponse ... – WattsInABox
Il y avait un bug dans les rails qui a causé cela. Voir ce https://github.com/rails/rails/issues/2333 pour plus d'informations. – chg