2

我正在为服务器错误编写一个 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
4

2 回答 2

4

我最终使用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

笔记:

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

于 2012-05-25T04:04:00.053 回答
0

它实际上是一个实例变量:@controller.

于 2012-05-24T18:34:55.000 回答