Моки могут быть созданы со значениями атрибутов по умолчанию

Можно ли создавать макеты со значениями атрибутов по умолчанию? Я не уверен, что на самом деле означает этот вопрос. Две возможности:

  1. если объект t=Movie.find(10)и тогда, если я скажу m=mock(t), m автоматически наследует все значения атрибута t?

  2. Есть ли способ создать фиктивный объект с атрибутами по умолчанию, так что мы можем клонировать его каждый раз, когда мы используем его, не проходя через заглушки серии "initialize" эти атрибуты?

Спасибо за вашу помощь.

1 ответ

Решение

Когда дело доходит до 1) Это не имеет смысла. Если внутри теста у вас есть доступ к реальному объекту через Movie.find(10) Вы не должны использовать насмешки. Предполагая, что вы используете rspec_mocks и вы собираетесь написать утверждение, что конкретный метод был вызван, вы можете просто написать:

t = Movie.find(10)
t.should_receive(:foo)

Также проверьте это: https://www.relishapp.com/rspec/rspec-rails/v/2-11/docs/mocks/mock-model и этот https://www.relishapp.com/rspec/rspec- рельсы / об / 2-11 / документы / издевается / окурок-модель

Очень полезные помощники для насмешек AR/Mongoid и других моделей в спецификациях.

Вместе с factory_girl Вы можете установить атрибуты на эти макеты, например, movie = mock_model(Movie, FactoryGirl.attributes_for(:move))

Другие вопросы по тегам