我正在尝试编写一个单元测试来断言几个元标记值(在响应部分下)。如何使用属性标签检查单个值?
前任:
<meta property="keyword" content="site keywords" />
<meta property="description" content="site description" />
到目前为止,这就是我所得到的。但它返回失败。
it "should check meta fields" do
get :show, {:format => 'html' }
r = response.body
r.should have_selector('meta', :content => @site.title)
end
最佳答案
Capybara 的 have_selector
匹配器采用一个选项 :text
,而不是 :content
:
r.should have_selector('meta', :text => @site.title)
请参阅 github 上的 this discussion 和 this discussion。
但是,这并不能解释您的规范失败的原因,因为
:content
选项被忽略,如果有任何更宽松的内容,您应该进行测试。此测试失败的最可能原因是它是从 Controller 规范调用的,在这种情况下,响应将为空白,因为 rspec-rails prevents rails from actually rendering views 。如果是这种情况,您需要将规范移动到 spec/requests/下的文件中,或者在
render_views
块内添加指令 describe
。如果这不起作用,那么您必须提供有关规范上下文的更多信息,否则很难弄清楚出了什么问题。
关于ruby - 在 RSpec 中捕获和断言元标记,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12801463/