Factory.create在Put上下文中失败,但在Post上下文中失败

时间:2011-04-16 22:40:21

标签: ruby-on-rails rspec factory-bot mocha

我正在使用工厂女郎。我还是新手,尤其是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

1 个答案:

答案 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