在 RSpec 单元测试期间消除地址地理编码

发布于 2024-10-31 15:43:31 字数 404 浏览 5 评论 0原文

我正在使用 geocoder gem 将地理编码功能添加到我的 Active Record 模型类之一。这很好用,但我实际上不希望在单元测试期间触发地理编码。

我尝试通过将其添加到我的 RSpec 测试中来消除对地理编码的调用:

在(:each)之前
User.stub!(:geocode).and_return([1,1]) 结束

,当我运行测试时,它似乎仍然在调用地理编码。我做错了什么?

仅供参考,如果我在实例级别存根(例如 some_user.stub!而不是 User.stub!),这一切都有效。

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 call 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!).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哆啦不做梦 2024-11-07 15:43:31

如果您想在实例级别使用存根,您应该使用 RSpec 之外的其他模拟框架。例如,它是mocha(将以下内容添加到spec/spec_helper.rb):

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

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

现在,您可以在测试中使用 any_instance

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

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
绝不放开 2024-11-07 15:43:31

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

和摩卡一起的。

it's

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

with mocha.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文