Я пишу несколько тестов для веб-приложения, а один из контроллеров вызывает resolve
на объекте Scope
, который возвращает слегка измененную область. В тесте я хотел бы заглушить этот метод, чтобы вернуть исходную область (передан как параметр в Scope.initialize
).Как получить доступ к переменным экземпляра объекта во время stubbing?
Scope
объект
class Scope
def initialize(scope)
@scope = scope
end
def resolve
# Return a modified scope.
end
end
Контроллер
class FooController < ApplicationController
def show
foos = Scope.new(Foo.some_foos).resolve
respond_with foos
end
end
Испытание
it "does something" do
allow_any_instance_of(Scope).to receive(:resolve).and_return(???.scope)
get :show
# Do some assertions.
end
Что мне нужно, чтобы положить где ???
, чтобы заглушить метод resolve
в любом экземпляре Scope
, чтобы вернуть исходный объем, с которым он был создан?
Я использую Rspec 3.4.2.