当前位置:  开发笔记 > 编程语言 > 正文

使用RSpec和Rails测试给定布局的渲染

如何解决《使用RSpec和Rails测试给定布局的渲染》经验,为你挑选了5个好方法。

是否可以使用带有Rails的RSpec测试给定布局的使用,例如我想要一个执行以下操作的匹配器:

response.should use_layout('my_layout_name')

我在谷歌搜索时找到了一个use_layout匹配器,但它不起作用,因为响应或控制器似乎都没有匹配器正在寻找的布局属性.



1> Kevin Ansfie..:

David Chelimsky在Ruby论坛上发表了一个很好的答案:

response.should render_template("layouts/some_layout")



2> mislav..:

这适用于Rails上的边缘Rails和边缘RSpec:

response.layout.should == 'layouts/application'

不应该把它变成适合你的匹配器.


这在较新版本的rspec中不起作用.而是使用`response.should render_template('layouts/the_layout")`

3> Will Tomlins..:

已经有一个完美的功能匹配器:

response.should render_template(:layout => 'fooo')

(Rspec 2.6.4)


正确地为我工作,需要使用`response.should render_template(:layout =>'layouts/fooo')`.没有发现假阳性.

4> Otto..:

我找到了一个如何编写use_layout匹配器的例子.这是链接消失的代码:

# in spec_helper.rb

class UseLayout
   def initialize(expected)
     @expected = 'layouts/' + expected
   end
   def matches?(controller)
     @actual = controller.layout
     #@actual.equal?(@expected)
     @actual == @expected
   end
   def failure_message
     return "use_layout expected #{@expected.inspect}, got # 
{@actual.inspect}", @expected, @actual
   end
   def negeative_failure_message
     return "use_layout expected #{@expected.inspect} not to equal # 
{@actual.inspect}", @expected, @actual
   end
end


def use_layout(expected)
   UseLayout.new(expected)
end

# in controller spec
   response.should use_layout("application")



5> nathanvda..:

为了使这项工作,我必须编写以下内容:

response.should render_template("layouts/some_folder/some_layout", "template-name")

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有