sno*_*ams 7 ruby cucumber capybara
有没有办法迫使黄瓜情景失败?
我需要在每次测试结束时检查一些失败的情况.所以我想我可以检查一个'错误'对话框,然后如果它发生了则测试失败.
这可以通过下面的代码实现,但是存在问题.一旦我在失败中提出异常!函数,然后黄瓜停止运行After钩子的其余部分,因此注销函数不会被调用.
是:
After() do |scenario|
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
fail!(raise(ArgumentError.new('Unexpected Error dialog!')))
end
logout
end
Run Code Online (Sandbox Code Playgroud)
现在:
After() do |scenario|
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
scenario.fail!(logout)
end
end
Run Code Online (Sandbox Code Playgroud)
是否有更好的方法可以在不引发异常的情况下通过黄瓜测试失败?
您可以使用正常断言来获取挂钩失败.没有做过Capybara/rspec异常,但我认为你可以这样做:
page.should have_selector?(:dialog_message, 1, :text => 'Error')
Run Code Online (Sandbox Code Playgroud)
但是,如果您执行此操作或执行scenario.fail!(),您仍然无法注销.您需要将其包装在begin-ensure块中.
试试这个:
After do |scenario|
begin
page.should have_selector?(:dialog_message, 1, :text => 'Error')
ensure
logout
end
end
Run Code Online (Sandbox Code Playgroud)
更新
如果您不想调用标准断言并直接使方案失败,则可以执行以下操作 - 您需要使用fail而不是fail!:
After() do |scenario|
begin
#Checking for Error popups
if page.has_selector?(:dialog_message, 1, :text => 'Error')
fail(ArgumentError.new('Unexpected Error dialog!'))
#Or you can just do fail('Unexpected Error dialog') if you do not care about the type.
end
ensure
logout
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14560 次 |
| 最近记录: |