@maxprof
Студент

Как работают фабрики в тестах rspec?

Здравствуйте, помогите пожалуйста понять логику работы тестов моделей с помощью фабрик.

Вот сам тест:
require 'rails_helper'

RSpec.describe News do
  news1 = FactoryGirl.create(:news)
  news2 = FactoryGirl.create(:news)
  news1.title.should == "1 test news title"
  news2.title.should == "2 test news title"
end


Вот фабрика

FactoryGirl.define do
  factory :news do
    sequence(:title) { |i| "#{i} test news title"}
    sequence(:description) { |i| "#{i} test news description, must have minimum 40 letters"}
    user_id 1
    news_poster { fixture_file_upload "#{Rails.root}/spec/fixtures/images/calendar.png", 'image/png' }
  end
end

И модель News
class News < ActiveRecord::Base
  belongs_to :user
  has_attached_file :news_poster, styles: { medium: "300x300>", thumb: "100x100>" }, default_url: "/images/:style/missing.png"
  validates_attachment_content_type :news_poster, content_type: /\Aimage\/.*\Z/
  validates :title, presence: true, uniqueness: true, length: { minimum: 5, maximum: 40 }
  validates :description, presence: true, length: { minimum: 40, maximum: 250 }
  validates :news_poster, presence: true
end


По моей логике, каждый раз при запуске теста в тестовой БД должны создаваться новые записи с измененной цифрой "i"

sequence(:title) { |i| "#{i} test news title"}

И при первом запуске теста все работает, создаются записи с title - "1 test news title" и "2 test news title" - тест проходит успешно, но при повторном - цифра 1 и 2 не меняется на 3 и 4 как я думал, и уже выскакивает ошибка. Возможно я не правильно строю логику тестов?
  • Вопрос задан
  • 250 просмотров
Решения вопроса 1
Dem1
@Dem1 Куратор тега Ruby on Rails
Ruby on Rails developer
Sequences сбрасываются после каждого запуска.
Используйте гем database_cleaner
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы