Jak mogę sfałszować funkcje modułu samodzielnie napisanego modułu w moim projekcie?Jak wyśmiewać funkcje Ruby Module?
Biorąc moduł i funkcję
module ModuleA::ModuleB
def self.my_function(arg)
end
end
który nazywa się jak
ModuleA::ModuleB::my_function(with_args)
Jak należy wyśmiewać go, gdy jest on używany wewnątrz funkcji piszę specyfikacje dla?
Podwojenie go (obj = double("ModuleA::ModuleB")
) nie ma sensu dla mnie, jako funkcja nosi nazwę modułu, a nie na obiekcie.
Próbowałem stubbing to (ModuleA::ModuleB.stub(:my_function).with(arg).and_return(something)
). Oczywiście to nie zadziałało. stub
nie jest tam zdefiniowany.
Potem próbowałem go z should_receive
. Ponownie NoMethodError
.
Jaki jest preferowany sposób na kpiny z modułu i jego funkcji?
To w zasadzie, co starałem. Dzięki za opakowanie. Mój problem polegał jednak na tym, że umieściłem 'should_receive' w bloku' before: all'. Oczywiście to nie działa. Ale jestem głupi. –
@ Torbjoern, Oh yeah. Byłem tam. Cieszę się, że to się udało. –
W bieżącym rspec (3.6) daje "Using' should_receive' ze starej składni ': should 'rspec-mocks bez wyraźnego włączenia składni jest przestarzałe. Użyj nowej składni': expect' lub jawnie włącz ': powinien" zamiast tego. " –