Poniższy kod wywołuje błąd: undefined method "any_instance" for String:Class
require "rspec"
RSpec.configure do |config|
config.mock_with :rspec
end
describe String do
it "stubs" do
String.any_instance.stub(:foo).and_return(1)
"".foo.should eq(1)
end
end
Jak mogę dołączyć moduł Mocks do klasy Class lub Object?
Odpowiedzi:
30 dla odpowiedzi nr 1Any_instance zostało ostatnio dodane do rspec, więc twój przykład działa teraz dla mnie tak, jak jest z rspec 2.7.
Oto więcej dokumentacji Any_instance: https://www.relishapp.com/rspec/rspec-mocks/docs/method-stubs/stub-on-any-instance-of-a-class
3 dla odpowiedzi № 2
Z RSpec Mocks w wersjach wcześniejszych niż 2.6.0, nie możesz tego zrobić. Możesz jednak użyć any_instance
z Mocha (jak widać tutaj) lub w późniejszych wersjach Rspec.
W Twoim spec/spec_helper.rb
Upewnij się, że masz tę linię:
config.mock_with :mocha
odkomentowany.