Ruby on rails 水豚不明确匹配-应具有_内容
我在一个Rails应用程序中使用了Capybara和Rspec,我的一些测试一直没有通过,这条消息如下:Ruby on rails 水豚不明确匹配-应具有_内容,ruby-on-rails,rspec,capybara,ruby-on-rails-4,Ruby On Rails,Rspec,Capybara,Ruby On Rails 4,我在一个Rails应用程序中使用了Capybara和Rspec,我的一些测试一直没有通过,这条消息如下: 失败/错误:它{应该有_内容('Error')} 水豚:模棱两可: 不明确的匹配,找到2个匹配xpath“/html”的元素 这是合乎逻辑的,因为在我的测试中,我的应用程序应该呈现两条带有“错误”内容的消息 . * 下面是我的应用程序布局: 正确%> 正确%> 你知道让它通过的方法吗 编辑 我使用了save_和'error')?是的,看起来是这样。。。但是我现在正处于其他的中间
失败/错误:它{应该有_内容('Error')}
水豚:模棱两可:
不明确的匹配,找到2个匹配xpath“/html”的元素
这是合乎逻辑的,因为在我的测试中,我的应用程序应该呈现两条带有“错误”内容的消息
.
- *
下面是我的应用程序布局:
正确%>
正确%>
你知道让它通过的方法吗
编辑
我使用了save_和
,没有发现任何额外的html
标记,页面外也没有错误消息。但是当我删除
时,它就会工作。我真的必须有
和开头的
标签吗?我可以删除
而不产生后果吗
勒特罗奎特
.
.
.
.
.
.
.
.
.
问题似乎在于您:
标记,或者可能
标记之外请参阅此讨论:。好的,我理解这个问题。当我使用
应该有_内容时
,水豚搜索整个版面中的内容。但是它发现了两个html
标记,这使得它失败,因为它不知道哪一个是正确的。为什么有两个html
标记?因为水豚不会忽略
我解决了我的问题,但更多的是绕道而行。我没有搜索内容,而是让Capybara搜索“error”div,其中包含“error”消息。因此,它不必搜索整个应用程序布局,也不必被两个html
标记卡住
因此,我只需将
it{should have_content('error')}
替换为it{should have_selector('div',text:'error')}
,它就可以工作了。检查关闭
标记之外的元素。在我的例子(HAML)中,我有一个javascript标记,它的缩进不正确
%html
...
:javascript
修理
缩进:javascript使其包含在html标记中解决了问题。奇怪的是,我没有两个
html
标记,也没有出现在html
标记外的“错误”…您使用的是什么版本的水豚?您的布局是什么样子的?另外,请尝试在规范中添加一个save_和\u open_页面
,以查看HTML的实际外观。感谢您的帮助,我找到了一种解决此问题的方法;-)您必须有两个HTML标记。这正是错误消息所说的。我认为这不是have\u selector
的正确语法——我认为它忽略了您在那里的“错误”。不应该是:have_selector('div',:text=>'error')
?是的,看起来是这样。。。但是我现在正处于其他的中间,这给了我太多的RScript失败信息,我稍后会更正…一般的建议:你应该一次解决一个问题,而不是只是试图让你的测试通过而不了解实际发生的事情。我同意,规避错误并不是纠正错误。如果有人对实际问题有答案,那就太好了。谢谢
%html
...
:javascript
...