/ / Jak zagłębiać dowolne wystąpienia dla danej klasy za pomocą Rspec Mocks - ruby, szyderstwa, rspec

Jak pobrać dowolne wystąpienia dla danej klasy za pomocą Rspec Mocks - ruby, szyderstwa, rspec

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 1

Any_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.