Factory.create завершается ошибкой в ​​контексте Put, но не в контексте Post - PullRequest
0 голосов
/ 17 апреля 2011

Я использую Factorygirl.Я все еще новичок, в частности в аспекте тестирования 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 голосов
/ 17 апреля 2011

Я уверен, что ваша фабрика не соответствует требованиям валидации.В вашем определении фабрики ваша фабрика должна быть в состоянии пройти все проверки.В противном случае вы должны явно выполнить их как:

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
...