hea*_*thd 5 ruby ruby-on-rails testunit ruby-on-rails-3.1
我正在使用testunit 2.4.0为rails 3.1 app编写控制器测试.
我想断言某个标题没有出现在页面上.
我正在使用这样的assert_select:
assert_select 'h1', {:text => /Key Dates/, :count => 0}
Run Code Online (Sandbox Code Playgroud)
并收到以下错误:
ArgumentError: assertion message must be String or Proc: <</Key Dates/>
expected but was <"Planner Maternity leave">.>(<Test::Unit::Assertions::AssertionMessage>)
Run Code Online (Sandbox Code Playgroud)
我已经跟踪了这个事实,即创建一个实例并将其传递给测试单元的assert_select
调用.但是在testunit 2.2版(2011年2月)中添加了检查,检查传入的消息的类型.这些检查触发了上面看到的.build_message
AssertionMessage
assert
ArgumentError
我不确定错误在于测试单元是否过度严格或者assert_select是否传递了错误的对象类型.
你能建议如何最好地跟进吗?任何解决方法?
因此,assert_select 文档显示了以下示例,传入一个块:
assert_select "ol" do |elements|
elements.each do |element|
assert_select element, "li", 4
end
end
Run Code Online (Sandbox Code Playgroud)
那么如果你做了类似的事情怎么办?
assert_select 'h1' do |elements|
elements.length == 0 ? fail
elements.each do |element|
element.text ~= /Key Dates/ ? fail
end
end
Run Code Online (Sandbox Code Playgroud)
如果找到模式或元素数量h1
为零,则基本上会失败。显然,您会更改条件以匹配您要测试的内容,但这会让您更接近您需要的吗?
归档时间: |
|
查看次数: |
729 次 |
最近记录: |