2013-04-23 10 views

Odpowiedz

20

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 
77

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.

+2

Dzięki za to. Czy masz odniesienia do tej dokumentacji lub lokalizacji w kodzie? – steel

+2

powinno to być oznaczone jako poprawna odpowiedź dla szyn 4 rspec 3.0 –

+0

Dokumenty dla wersji Rspec 3. https://relishapp.com/rspec/rspec-mocks/docs/configuring-responses/calling-the-original-implementation – counterbeing

Powiązane problemy