ruby on rails - describe - Pruebas de validación Rspec de Factory Girl que fallan
que es rspec (1)
Deberías usar build como en el siguiente:
user = Factory.build(:user, :username=>"foo")
Porque usar el método que estás usando intentará crear un registro. Ver docs para más información.
He estado tratando de comprender las pruebas de escritura, pero tener muchos problemas ya que las pruebas nunca parecen validar la forma en que quiero que lo hagan. En particular, he estado tratando de usar Factory Girl en lugar de accesorios, como lo sugirió un reciente Railscasts y otros consejos que he visto en la red, debido a los beneficios que profesa, y eso no ha funcionado.
Por ejemplo, aquí hay una prueba Rspec simple para un modelo de usuario, que se prueba para asegurarse de que haya un nombre de usuario presente ...
describe User do
it "should not be valid without a username" do
user = FactoryGirl.create(:user, :username => "", :password => "secret")
user.should_not be_valid
end
end
Y mi archivo factories.rb, si ayuda ...
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "registered-#{n}" }
password "foobar"
end
end
Cuando ejecuto ''rake spec'', me dice ...
1) User should not be valid without a username
Failure/Error: user = FactoryGirl.create(:user, :username => "", :password => "secret")
ActiveRecord::RecordInvalid:
Validation failed: Username can''t be blank
Ummm ... ese es el PUNTO. Si especificé que el usuario NO debería ser válido, ¿no debería pasar esta prueba?
Si sustituyo la línea Factory Girl y configuro al usuario en la prueba con algo como ''user = User.new(:username => "", :password => "secret")''
, no es de extrañar que la prueba pase bien. Entonces, ¿por qué Factory Girl no está funcionando bien?