开发者

Stub out address geocoding during RSpec unit test

开发者 https://www.devze.com 2023-02-25 17:53 出处:网络
I\'m using the geocoder gem to add geocoding functionality to one of my Active Record model classes. This works great, but I don\'t actually want the geocoding to fire during unit tests.

I'm using the geocoder gem to add geocoding functionality to one of my Active Record model classes. This works great, but I don't actually want the geocoding to fire during unit tests.

I've tried stubbing out the ca开发者_如何学JAVAll to geocode by adding this to my RSpec test:

before(:each) do

User.stub!(:geocode).and_return([1,1]) end

However, when I run my tests it still appears to be calling out to geocode. What am I doing wrong?

FYI, this all works if I stub on the instance level (e.g. some_user.stub! instead of User.stub!).


If you want to use stubbing on the instance level, you should use other mocking framework than RSpec’s. It's mocha for example (add the following to spec/spec_helper.rb):

Spec::Runner.configure do |config|
  config.mock_with :mocha
end

http://rspec.info/documentation/mocks/other_frameworks.html

Now, you can use any_instance in your tests:

before(:each) do
 User.any_instance.stub(:geocode).and_return([1,1]) 
end


it's

before(:each) do 
  Address.any_instance.stubs(:geocode).returns([1,1])
end

with mocha.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号