Как получить простой тест для запуска с rspec + fabrication? - PullRequest
2 голосов
/ 19 марта 2012

Я пытаюсь запустить простой тест с использованием rspec + изготовления. К сожалению, не так много приличных статей на эту тему.

В спецификации / модели / event_spec.rb

require 'spec_helper'

describe Event do
  subject { Fabricate(:event) }

  describe "#full_name" do
    its(:city) { should == "LA" }
  end

end

В спецификации / производителях / event_fabricator.rb

Fabricator(:event) do
  user { Fabricate(:user) }

  # The test works if I uncomment this line:
  # user_id 1

  city "LA"
  description "Best event evar"
end

В спецификации / изготовления / user_fabricator.rb

Fabricator(:user) do
  name 'Foobar'
  email { Faker::Internet.email }
end

Я продолжаю получать:

 1) Event#full_name city 
     Failure/Error: subject { Fabricate(:event) }
     ActiveRecord::RecordInvalid:
       Validation failed: User can't be blank

PS , если кто-нибудь знает какие-либо онлайн-статьи / учебные пособия, которые стоит прочитать при начале работы с rspec и фальсификацией. Дай мне знать

1 Ответ

6 голосов
/ 20 марта 2012

Одной из особенностей Fabricator является то, что он лениво генерирует ассоциации, а это означает, что ваш User не будет сгенерирован, если метод доступа user не вызывается в модели Event.

Похоже, ваша модель Event имеет проверку, для которой требуется User. Если это так, вам нужно объявить своего изготовителя следующим образом:

Fabricator(:event) do
  # This forces the association to be created
  user!
  city "LA"
  description "Best event evar"
end

Это гарантирует, что модель User будет создана вместе с Event, что позволит вам пройти проверку.

см .: http://fabricationgem.org/#!defining-fabricators

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...