我正在为服务器错误编写一个api测试用例。我想存根一个控制器动作,提出一个错误,以模拟服务器错误(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破坏了控制器方法。

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

注:
请求规范中的stubing控制器方法没有意义。但是…在这种情况下,我使用请求规范套件作为验收标准。其中一个要求是确保所有的错误代码和消息都与api设计相匹配,我能够诱导服务器产生api设计中指定的所有http错误代码。唯一的边缘病例是internal server error(i.e. 500)。我无法诱导控制器提出这个错误。因为,我正在测试错误回复,而且由于此回复与异常的位置和来源无关,所以我决定将其存根。

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

10-14 19:25
查看更多