Come posso stub un metodo all'interno di un modulo:Rspec - stub metodo di modulo
module SomeModule
def method_one
# do stuff
something = method_two(some_arg)
# so more stuff
end
def method_two(arg)
# do stuff
end
end
posso testare method_two
in isolamento bene.
vorrei provare method_one
in isolamento troppo dal spegnendo il valore di ritorno di method_two
:
shared_examples_for SomeModule do
it 'does something exciting' do
# neither of the below work
# SomeModule.should_receive(:method_two).and_return('MANUAL')
# SomeModule.stub(:method_two).and_return('MANUAL')
# expect(described_class.new.method_one).to eq(some_value)
end
end
describe SomeController do
include_examples SomeModule
end
Le specifiche in SomeModule
che sono inclusi nel SomeController
fallire perché method_two
genera un'eccezione (si cerca di fare un db ricerca che non è stata seminata).
Come posso eseguire lo stub method_two
quando viene chiamato entro method_one
?
serio? perché downvote? – Harry
cosa ti aspetti da questo modulo? essere un mixin o chiamare un metodo da esso a livello di classe come: 'SomeModule.foo'? – apneadiving
Prendi coraggio, George. I downvotes sulle domande sono una cattiva idea, a mio parere, ma la buona notizia è che quelli inappropriati stimolano frequentemente gli upvotes compensativi, con un guadagno netto per te e nessun impatto sul voto netto. –