我一直在努力掌握编写测试的方法,但由于测试似乎永远无法验证我想要的方式,因此遇到了很多麻烦。特别是,我一直在尝试使用Factory Girl而不是固定装置 - 正如我最近在网上看到的Railscasts和其他建议所示 - 由于它所宣称的好处,而且还没有成功。 / p>
例如,这是一个针对用户模型的简单Rspec测试,测试以确保存在用户名...
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
我的factories.rb文件,如果它有帮助...
FactoryGirl.define do
factory :user do
sequence(:username) { |n| "registered-#{n}" }
password "foobar"
end
end
当我运行'rake spec'时,它会告诉我......
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
嗯......这就是POINT。如果我指定用户不应该有效,那么这个测试是否真的不能通过?
如果我更换了Factory Girl系列,并在测试中将用户设置为'user = User.new(:username => "", :password => "secret")'
,那么测试通过就好了。那么为什么Factory Girl不能正常工作呢?
答案 0 :(得分:22)