Мокко не предоставляет такой функциональности. Однако вы можете реализовать это самостоятельно.
Первое, что мы должны знать о mocha
, это то, что mocha
фактически заменяет оригинальные методы, когда вы их заглушаете. Таким образом, чтобы иметь возможность восстановить эти методы позже, вы должны сохранить ссылку на прежние. Это может быть легко достигнуто путем: alias new_method old_method
.
Это должно быть сделано до насмешки над old_method
.
Теперь, чтобы разблокировать метод, вам нужно всего лишь alias old_method new_method
.
Рассмотрим следующий код:
class A
def a
true
end
end
class TestA < Test::Unit::TestCase
def test_undo_mock
a = A.new
A.class_eval {alias unmocked_a a}
A.any_instance.stubs(:a).returns("b")
assert a.a, "b"
A.class_eval {alias a unmocked_a}
assert a.a, "a"
end
end