Мне кажется, проблема в том, что вы включили заглушку в блоке before(:each)
, а не в блоке before(:context)
, который выполняется перед блоком before(:each)
. На этом этапе метод stub
из dry-container
неизвестен rspec / ruby, и поэтому он пытается использовать метод stub
по умолчанию из rspec-mock
.
require 'dry/container/stub'
before(:context) { FooContainer.enable_stubs! }
before(:context) { FooContainer.stub 'foo.key', stubbed_operation }
# or better
before(:context) do
FooContainer.enable_stubs!
FooContainer.stub 'foo.key', stubbed_operation
end
after(:context) { FooContainer.unstub 'foo.key' }
context "my context" do
it "my test" do
...
end
end
Из документации по испытаниям сухих контейнеров
# before stub you need to enable stubs for specific container
container.enable_stubs!
container.stub(:redis, "Stubbed redis instance")