67
Poniższy fragment kodu działa zgodnie z oczekiwaniami:Object.any_instance should_receive vs spodziewać(), aby otrzymać
Object.any_instance.should_receive(:subscribe)
Ale kiedy przy użyciu nowego rspec oczekiwanie to nie działa:
expect(Object.any_instance).to receive(:subscribe)
Błąd to:
expected: 1 time with any arguments
received: 0 times with any arguments
Jak mogę to wykonać, oczekując() na odbiór?
+1 dla "niezbyt dobrze udokumentowane". Wciąż tak jest. http://www.rubydoc.info/gems/rspec-mocks/RSpec/Mocks/ExampleMethods:expect_any_instance_of – johngraham
Używam 'allow_any_instance_of'. Czy jest to pseudonim tej metody? – rubyprince
@rubyprince Są różne, dzięki metodom pozwalającym na niedokładne zachowanie i oczekują metod testowania zachowania. Na przykład, 'pozwalają (my_obj) .Aby otrzymać (: method_name) .and_return (true)' 'my_obj.method_name odcinki()', więc jeśli to się nazywa w teście po prostu zwraca 'TRUE. 'spodziewać (my_obj) .Aby otrzymać (: method_name) .and_return (true)' nie zmienia żadnych zachowań, lecz ustanawia oczekiwanie niepowodzenia testu jeśli 'my_obj.method_name()' nie jest nazywany w dalszej części test lub nie zwraca prawdy. – Saigo