首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这个测试失败-没有实现的错误Rspec 3.1.x和Rails 4.1.9

为什么这个测试失败-没有实现的错误Rspec 3.1.x和Rails 4.1.9
EN

Stack Overflow用户
提问于 2015-02-03 00:07:52
回答 1查看 1.5K关注 0票数 1

我正在测试以下方法:

代码语言:javascript
复制
  def deal_with_response(site, responses, request_url)
    response.each do |response|
      if response.code == 200
        send_request(site.site_api_url, site.site_api_key, response, request_url)
      elsif response.code == 404
        send_request(site.site_api_url, site.site_api_key, response, request_url)
        GeneralMailer.recieved_404(ENV['ADMINISTRATOR_NAME'], ENV['ADMINISTRATOR_EMAIL'], site, response).deliver_now
      elsif response.code == 500
        send_request(site.site_api_url, site.site_api_key, response, request_url)
        GeneralMailer.recieved_500(ENV['ADMINISTRATOR_NAME'], ENV['ADMINISTRATOR_EMAIL'], site, response).deliver_now
      else
        send_request(site.site_api_url, site.site_api_key, response, request_url)
        GeneralMailer.recieved_error(ENV['ADMINISTRATOR_NAME'], ENV['ADMINISTRATOR_EMAIL'], site, response).deliver_now
      end
    end
  end

该代码对其进行了测试:

代码语言:javascript
复制
it "should send no email (200)" do
  response = double("response", :code => 200)
  site = double("site", :site_api_url => 'http://google.ca', site_api_key: 'sdsadsasada')
  send_request_method = double()
  send_request_method.stub(:send_request).with(site.site_api_url, site.site_api_key, [response], 'http://google.ca').and_return nil

  expect{ BlackBird::PublishToSites::User.deal_with_response(response) }.to_not change{ ActionMailer::Base.deliveries.count }.by(1)
end

结果是:

代码语言:javascript
复制
 Failure/Error: expect{ BlackBird::PublishToSites::User.deal_with_response(response) }.to_not change{ ActionMailer::Base.deliveries.count }.by(1)
 NotImplementedError:
   `expect { }.not_to change { }.by()` is not supported
 # ./spec/blackbird/publish_to_sites/user_spec.rb:129:in `(root)'

我是不是遗漏了什么?我在其他测试中做了类似的代码,它运行得很好。我是不是把期望街区搞错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-03 01:46:23

正如错误消息所示,不支持expect {}.not_to change { }.by()。在not_to中使用“更改匹配器”时,只能指定from值。

尝试以下两种方法之一:

代码语言:javascript
复制
expect{ BlackBird::PublishToSites::User.deal_with_response(response) }.to_not change{ ActionMailer::Base.deliveries.count }

expect{ BlackBird::PublishToSites::User.deal_with_response(response) }.to_not change{ ActionMailer::Base.deliveries.count }.from(original_delivery_count)

method

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28289159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档