Je suis à essayer d'installer des tests dans mon application, et j'ai rencontré un problème avec RSpec, FactoryGirl, et Mongoid. Je l'usine suivante:FactoryGirl + Mongoid + RSpec ne construit pas correctement les objets.
FactoryGirl.define do
factory :user do |u|
u.name { Faker::Name.name }
u.email { Faker::Internet.email }
u.crypted_password { Faker::Lorem.characters(10) }
u.password_salt { Faker::Lorem.characters(10) }
u.role :user
end
end
J'essaie d'utiliser cette usine dans mes tests:
require 'spec_helper'
describe User do
it "has a valid factory" do
create(:user).should be_valid
end
end
Mais je reçois cette erreur:
1) User has a valid factory
Failure/Error: FactoryGirl.create(:user).should be_valid
NoMethodError:
undefined method `user' for #<User:0x007ff24a119b28>
# ./spec/models/user_spec.rb:5:in `block (2 levels) in <top (required)>'
Je ne sais pas ce qui est provoquant cette erreur. De plus, existe-t-il un moyen de voir une pile complète en utilisant rspec?
@Max, je ne sais pas comment vous avez défini le rôle, mais vous pouvez le vérifier dans la console à l'aide '@user.role = something'. Tout ce qui fonctionne dans la console fonctionnera également en usine. –
J'ai trouvé le problème. C'était une simple faute de frappe. Je validais le champ 'user' au lieu du champ' role'. Savez-vous comment obtenir des stacktraces complets de rspec? J'aurais probablement remarqué plus tôt si j'avais été capable de regarder la trace de la pile. – Max
@Max, ajoutez simplement le paramètre '-b' dans votre commande rspec, ce qui signifie backtrace. –