Como gosto de ter pelo menos duas fábricas por modelo no Rails, uma válida e outra inválida, é uma boa ideia testar se ambas retornam um resultado esperado:
Portanto, tenho uma fábrica como esta:
FactoryGirl.define do
factory :task do
title "A single to do item"
description "Some more details regarding the task"
end
factory :invalid_task, class: "Task" do
title ""
description ""
end
end
Então, posso testar a aprovação das fábricas com uma especificação simples:
require 'spec_helper'
FactoryGirl.factories.map(&:name).each do |name|
describe "the #{name} factory" do
if name =~ /invalid/
it 'is invalid' do
build(name).should_not be_valid
end
else
it 'is valid' do
build(name).should be_valid
end
end
end
end