Przeszukano dokumenty Relish, ale nie znaleziono sposobu na anulowanie w RSpec.Czy istnieje sposób na anulowanie subskrypcji w RSpec?
Czy to możliwe?
Przeszukano dokumenty Relish, ale nie znaleziono sposobu na anulowanie w RSpec.Czy istnieje sposób na anulowanie subskrypcji w RSpec?
Czy to możliwe?
Kod rspec-mock wskazuje, że można wywołać metodę unstub
. Cytuję:
# Removes a stub. On a double, the object will no longer respond to
# `message`. On a real object, the original method (if it exists) is
# restored.
#
# This is rarely used, but can be useful when a stub is set up during a
# shared `before` hook for the common case, but you want to replace it
# for a special case.
def unstub(message)
::RSpec::Mocks.space.proxy_for(self).remove_stub(message)
end
Dzięki nowej składni expect
, unstub
jest przestarzała. Można to zrobić:
# stub
allow(SomeClass).to receive(:a_method)
# do something...
# unstub
allow(SomeClass).to receive(:a_method).and_call_original
Jeśli pierwszy allow
zawiera .with
lub blok, wierzę, będzie ona nadal nosić do następnej rozmowy, więc następnym allow
nie usuwa tych rzeczy.
Dzięki za to. Czy masz odniesienia do tej dokumentacji lub lokalizacji w kodzie? – steel
powinno to być oznaczone jako poprawna odpowiedź dla szyn 4 rspec 3.0 –
Dokumenty dla wersji Rspec 3. https://relishapp.com/rspec/rspec-mocks/docs/configuring-responses/calling-the-original-implementation – counterbeing
Czy możesz wyjaśnić, dlaczego chcesz coś zmienić? Być może istnieje lepsze podejście. –