Stub_chain RSpec возвращает заглушку, даже если она не включает полную цепочку областей - PullRequest
1 голос
/ 15 марта 2012

Сегодня у меня возникла проблема с моими спецификациями RSpec и областями действия ActiveRecord.

У меня есть контроллер, который выполняет код, подобный этому

@customers = Customer.active.with_counts.order('name asc')

'active' и 'with_counts' являются областями действия для модели Customer.

Раньше у меня была спецификация, в которой использовался stub_chain:

Customer.stub_chain(:with_counts, :order).with('name asc') { [mock_customer] }

Я не ожидал, что это удастся, так как контроллер включал «активную» область, но, к моему удивлению, это удалось без каких-либо проблем.

Я полагаю, что "активный" контекст вызывается для реального класса Customer и возвращает что-то, с чем связывается stub_chain, и поэтому он, похоже, работает.

Как я могу написать свою спецификацию, чтобы избежать такого рода проблем при цепочке областей ActiveRecord?

Обратите внимание, что реальный вызов в контроллере не всегда будет использовать обе области - он зависит от фильтрации, поэтому простое завершение всего в новом методе - это не тот способ, которым я стремлюсь.

...