J'essaie de simuler une session en utilisant FactoryGirl
/shoulda
(cela a fonctionné avec des appareils mais j'ai des problèmes avec l'utilisation d'usines). Je suit les usines (login utilisateur et email les deux ont unique
validations):quand est-ce que l'usine crée des objets en db?
Factory.define :user do |u|
u.login 'quentin'
u.email '[email protected]'
end
Factory.define :session_user, :class => Session do |ses|
ses.association :user, :factory => :user
ses.session_id 'session_user'
end
et voici le test
class MessagesControllerTest < ActionController::TestCase
context "normal user" do
setup do
@request.session[:user_id]=Factory(:user).id
@request.session[:session_id]=Factory(:session_user).session_id
end
should "be able to access new message creation" do
get :new
assert_response :success
end
end
end
mais quand je lance rake test:functionals
, j'obtenir ce résultat de test
1) Error:
test: normal user should be able to access new message creation. (MessagesControllerTest):
ActiveRecord::RecordInvalid: Validation failed: Account name already exists!, Email already exists!
ce qui signifie que l'enregistrement existe déjà dans db lorsque je fais référence à celui-ci dans la configuration de test. Y a-t-il quelque chose que je ne comprends pas ici? est-ce que FactoryGirl
crée toutes les usines en db au démarrage?
rails 2.3.5/Shoulda/factorygirl
mais je n'ai qu'une seule mention Factory (: user) dans mon code. pourquoi ça marche deux fois? (en second lieu est Factory (: session_user), qui est une instance de Session) –
Vous devez vous connecter pour pouvoir lire la question –