Во-первых, вы хотели бы убедиться, что ваша модель обучена распознавать книги. Тогда вы можете просто игнорировать все классы (On line 21
), кроме класса персонажа, проверяя только индекс и вероятность, связанные с классом персонажа. В качестве альтернативы вы можете настроить свою сеть, чтобы применить обнаружение человека. Ссылка: Адриан Роузброк (Автор вашего кода)
Я лично использую Обманщик с пользовательским классом Фабрики. Это позволяет мне создавать свои фабрики и заполнять сгенерированные экземпляры с нестатическими данными.
# spec/factory.rb
module Factory
def self.create_offer(options={})
Offer.create({
:code => Faker::Lorem.words(1),
:expires_on => Time.now + (rand(30) + 1).day
}.merge(options))
end
end
# spec_helper.rb
require 'faker'
require 'spec/factory'
# In the specs
@offer = Factory.create_offer(:code => 'TESTING')
Я защищу для Замена Приспособления 2 . Ваше значение по умолчанию (не заботятся) образцовые атрибуты хранятся все в одном месте, db/example_data.rb, и обеспечивают быстрые доступные объекты. Любые атрибуты, которые Вы указываете после создания, переопределяют атрибуты по умолчанию - значение данных, что Вы уход о в тесте , и ничто иное.
Ваши данные в качестве примера могут также обратиться к другим моделям по умолчанию, которые представлены procs с задержанной оценкой, таким образом, можно переопределить ассоциации легко при желании.
Версия 2 обеспечивает намного более чистый формат определения, все еще обеспечивая волшебство new_*, create_*, and default_*
методы для каждой модели.
я избежал бы любого вида схемы "сценариев", которая поощряет создавать все больше данных тестирования, которые это твердо считать позже. Можно создать названные (пользовательские) объекты с FR2, но я никогда не находил потребность в нем.
P.S. Удостоверяются, что Вы рассматриваете Ваш единица стратегия тестирования также - Приспособления и все их аналоги являются реальными объектами, которые поражают DB, делающий для функциональных испытаний или интеграционных тестов. Я в настоящее время использую RSpec's, дразнящий наряду с stub_model()
и последнее драгоценный камень unit_record для запрещения доступа DB.
Я использую Обманщика наряду с драгоценным камнем Populator Ryan Bates. У него даже есть хороший скринкаст в http://railscasts.com/episodes/126-populating-a-database .
Мы только что начали использовать Девочку Фабрики для наших проектов. Его способ сделать вещи не очень отличался от нашего решения собственной разработки так его работа хорошо для нас.
Я играл вокруг с машинист в последнее время, и рою его.
Я - большой поклонник фабрики, когда Вам только нужны один или несколько объектов. Можно или записать собственному Thoughtbot или использование Thoughtbot Девочка Фабрики .
Для ситуаций, где Вам нужен курировавший набор взаимосвязанных объектов, фабрики удара приспособлений, и необходимо смотреть на превосходное Облегченные Приспособления , который делает приспособления значительно большим количеством DRY и управляемый.
Фабрика великолепна. Мы используем его в рабочих нагрузках.
Factory.define :usa, :class => Team do |f|
f.country_name 'USA'
f.rank 15.6
end
Factory.define :player do |f|
f.first_name 'Stevie'
f.last_name 'Wonder'
f.team Factory.build(:usa)
end
Затем в своих спецификациях вы можете использовать Factory.build (: usa)
или Factory.create (: usa)
для создания или создания США соответственно.
I can give Factory Girl a plus one as well. The way it can associate between multiple Factories is really helpful when you have a somewhat normal model set. A Project has one project manager, for example.
Factory.define :project_manager do |f|
f.first_name "John"
f.last_name "Doe"
end
Factory.define :project do |f|
f.name "Sample Project"
f.association :project_manager
end
That way you don't need to worry about actually setting up the relationships in each test. It can also do some work like Faker where you can build sample data in factories using Factory.sequence. For all the information on Factory Girl, check out: http://dev.thoughtbot.com/factory_girl/.