Вы можете временно заглушить методы способом, почти идентичным тому, на который вы надеялись.( Документы для MiniTest::Object#stub
)
Так как метод, который вы на самом деле хотите заглушки, - OtherObject.callback_method
, вы бы заглушили его так:
OtherObject.stub(:callback_method,return_value) {}
Теперь, когда OtherObject.callback_method
вызывается внутри блока ({}
), он возвращает return_value
, а не вызывает метод.Таким образом, учитывая приведенный выше пример, следующий тест пройдет:
def test_returns_true_when_I_make_it
test_obj = SomeObject.new
OtherObject.stub(:callback_method,true) do
assert test_obj.test_method, true
end
end
Это потому, что ваш SomeObject#test_method
возвращает значение OtherObject.callback_method
, поэтому, поскольку я озвучил этот вызов, я на самом деле просто проверяю, работает ли заглушкаВы можете заменить значения true
любыми равными объектами, которые вам нужны, и тест все равно пройдет, например,
def test_returns_foobar_when_I_make_it
test_obj = SomeObject.new
OtherObject.stub(:callback_method,"foobar") do
assert test_obj.test_method, "foobar"
end
end