我正在使用工厂女郎。我还是新手,尤其是rails的测试方面。
当我描述POST创建时,我可以创建任意数量的Person对象而没有任何问题。我实际上不需要在这里创建一个,因为我通常只是存根有效?人的方法。但为了解决这个问题,我把它扔在了那里。无论这个Factory.create(:person)处于POST创建上下文中(或者我在那里使用了多少次),当我在PUT更新上下文中使用它时,它会抛出一条非描述性的错误消息。
此外,我已从模型中删除了所有验证,但结果没有变化。
我很茫然。
让我们了解基础知识:
describe PeopleController do
describe "POST create" do
describe "with valid params" do
it "creates a person from params and renders persons/_form partial" do
f = Factory.create(:person)
# f = Factory.create(:person)
# f = Factory.create(:person)
end
end
end
describe "PUT update" do
describe "with valid params" do
it "updates the requested person" do
f = Factory.create(:person) #error when running rake spec
end
end
end
end
错误:
Failure/Error: f = Factory.create(:person)
ActiveRecord::RecordInvalid:
Validation failed:
模型
class Person < ActiveRecord::Base
end
答案 0 :(得分:0)
我很确定您的工厂不符合验证要求。在您的工厂定义中,您的工厂应该能够通过所有验证。否则,您必须明确地履行它们:
f = Factory(:person, :attribute => value_that_passes_validation, ...)
编辑(序列):
Factory.define :user do |f|
f.sequence(:username) { |n| "test#{n}" }
f.password "1234567890"
f.sequence(:email) { |n| "test#{n}@test.com" }
end