首页 > 解决方案 > 为什么我不能在 to_raise 匹配器中捕获 Capybara::ElementNotFound ?

问题描述

pry#<> expect(find("#recipients")).to raise_error(Capybara::ElementNotFound)
Capybara::ElementNotFound: Unable to find visible css "#recipients"

我知道测试“未”找到某些元素是困难的并且可能容易出错,但我相信我的用例是一个很好的用例。

我正在尝试制作一个#dont_find 匹配器...

标签: rspeccapybara

解决方案


您的问题是您试图find('#recipients')直接传递给expect,但这不起作用,因为find引发异常,因此expect甚至从未被调用。您应该改为传递一个块,如下所示:

expect { find('#recipients') }.to raise_error(Capybara::ElementNotFound)

推荐阅读