use*_*003 4 rspec views ruby-on-rails-4
作为我的视图规范的一部分,我有时想检查是否也为页面上的某个元素呈现了正确的文本.
让我们说渲染的HTML是 -
<div class="user-msg">
<b>Thank You!</b>
</div>
Run Code Online (Sandbox Code Playgroud)
我可以在我的视图中测试规格 -
expect(rendered).to match(/Thank You/)
Run Code Online (Sandbox Code Playgroud)
然而,这可能会错误地失败或通过,具体取决于页面上是否还有其他内容也表示"谢谢".
如何在具体<div>
问题内进行搜索?如果这是一个功能测试,我会使用Capybara来选择节点 -
within(".user-mssg") { expect(page.body).to have_content("Thank You") }
Run Code Online (Sandbox Code Playgroud)
如何.user-msg
在我的View规范中找到特定的HTML元素(例如)并在其中进行搜索?
谢谢!
编辑:"谢谢!"
rspec-html-matchers就是这样做的:
<h1>Simple Form</h1>
<form action="/users" method="post">
<p>
<input type="email" name="user[email]" />
</p>
<p>
<input type="submit" id="special_submit" />
</p>
</form>
Run Code Online (Sandbox Code Playgroud)
规格:
expect(rendered).to have_tag('form', :with => { :action => '/users', :method => 'post' }) do
with_tag "input", :with => { :name => "user[email]", :type => 'email' }
with_tag "input#special_submit", :count => 1
without_tag "h1", :text => 'unneeded tag'
without_tag "p", :text => /content/i
end
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1207 次 |
最近记录: |