使用 RSpec 测试控制器中的渲染方法
我正在尝试使用 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想测试
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)