Rob*_*bin 11 rspec ruby-on-rails
我可以测试我的控制器以呈现某个布局
expect { get :index }.to render_template(layout: 'my_layout')
Run Code Online (Sandbox Code Playgroud)
但是如何测试控制器以呈现NO布局?
以下第一个期望通过,但要小心:第二个期望也过去了!(测试相同的代码)
expect { get :index }.to render_template(layout: false)
expect { get :index }.to render_template(layout: true)
Run Code Online (Sandbox Code Playgroud)
2008年11月,@ david-chelimsky说:
我成功处理这个问题的一种方法是在这个例子(在它自己的组中)中使用integrate_views,并指定布局中的html元素不在表单中.这是一个脆弱的例子,但它只是一个.
我不想检查渲染的视图,但到目前为止我没有找到任何更好的解决方案.
有人有一个好的方法吗?
虽然不是一个漂亮的衬里(你总是可以添加一个辅助方法),但我发现你可以这样做:
get :index
@templates.keys.should include(nil)
Run Code Online (Sandbox Code Playgroud)
我对此进行了测试,它仅在我设置时才有效layout false。基于assert_template 的实现,它将一些信息收集到实例变量中。相关的是@templates和@layouts- 每个都是由与渲染次数相对应的字符串作为键控的哈希值。
@templates将包含用于您的操作的模板(例如"users/show"),但@layouts仅列出布局。如果没有使用布局,它看起来像{nil=>1}. 这似乎是您唯一可以利用的东西。
因此,也许制作一个辅助方法或自定义匹配器来执行此操作可能会很好。
| 归档时间: |
|
| 查看次数: |
4001 次 |
| 最近记录: |