ruby-on-rails - 在 RSpec 请求规范中 stub Controller 操作

标签 ruby-on-rails ruby rspec

我正在为服务器错误编写 API 测试用例。我想 stub Controller 操作以引发错误以模拟服务器错误 (500)。 在请求规范中,未设置 controller 变量。

it "Should return 500 upon server error" do
  controller.stub(:index).and_raise(ArgumentError) 
  get "/users.json"
  response.code.should eq("500")
end

最佳答案

我最终使用any_instance对 Controller 方法进行了 stub 处理。

it "Should return 500 upon server error" do
  UsersController.any_instance.stub(:index).and_raise(ArgumentError)
  get "/users.json"
  response.code.should eq("500")
  response.body.should have_json_path("error")
end

注意:

在请求规范中 stub Controller 方法没有意义。但是......在这种情况下,我使用请求规范套件作为验收标准。要求之一是确保所有错误代码和消息都符合 API 设计。我能够促使服务器引发 API 设计中指定的所有 HTTP 错误代码。唯一的边缘情况是内部服务器错误(即 500)。我无法诱导 Controller 引发此错误。因为,我正在测试错误回复,并且由于该回复与异常的位置和来源无关,所以我决定将其 stub 。

关于ruby-on-rails - 在 RSpec 请求规范中 stub Controller 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10743306/

相关文章:

ruby-on-rails - 是否可以为在开发模式下运行的 Rails 控制台禁用延迟类加载?

ruby-on-rails - 为什么多字段映射不适用于 elasticsearch 的轮胎 gem ?

javascript - 如何从 rspec 集成测试中获取 nyc/istanbul JavaScript 覆盖率

ruby-on-rails-3 - capybara 歧义解析

ruby - 在 RSpec 循环中有条件地应用标签

ruby-on-rails - rails 中的数组参数是否保证按照它们在 url 中出现的顺序排列?

ruby-on-rails - 从代码中羽化图像

ruby-on-rails - 是否有可以从闪存驱动器运行的独立 Ruby(和 Rails)解决方案?

ruby - 获取特定索引 nokogiri 中的元素

mysql - 如何在 Rails 中将我的数据库从 SQLite 更改为 MYSQL