使用 RSpec 测试控制器中的渲染方法

发布于 2024-09-28 11:12:27 字数 429 浏览 2 评论 0原文

我正在尝试使用 RSpec (2.x) 测试控制器中的渲染方法。 这是我的控制器中的代码:

respond_to do |format|
  format.html # index.html.erb
  format.json { render :json => @entities, :include => :properties, :overview => options[:overview] }
end

这里是我在规范文件中尝试的测试:

controller.should_receive(:render).with( hash_including(:overview => true) )

问题是 RSpec 告诉我没有为渲染提供任何参数(“got: (no args)”)。甚至连 :json 都没有。如何正确存根渲染方法?

I am trying to test the render method in a controller with RSpec (2.x).
Here the code in my controller:

respond_to do |format|
  format.html # index.html.erb
  format.json { render :json => @entities, :include => :properties, :overview => options[:overview] }
end

And here the test I try in my spec file:

controller.should_receive(:render).with( hash_including(:overview => true) )

The problem is that RSpec tells me that no arguments are provided for render ("got: (no args)"). Not even the :json one. How do I stub the render method correctly?

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

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

发布评论

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

评论(1

笑红尘 2024-10-05 11:12:27

如果您想测试 render :json,只需检查响应是否包含 JSON 字符串即可。

简化示例: response.body.should == @object.to_json

如果您只想存根渲染方法,请使用 controller.stub!(:render)

If you want to test your render :json, just check that the response does contain a JSON string.

Simplified example: response.body.should == @object.to_json

If you just want to stub render method use controller.stub!(:render)

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