ruby-on-rails-4 - 在 RSpec View 测试中的 HTML 元素中搜索

标签 ruby-on-rails-4 rspec views

作为我的 View 规范的一部分,我有时喜欢检查页面上的某个元素是否也呈现了正确的文本。

假设渲染的 HTML 是 -

<div class="user-msg">
  <b>Thank You!</b>
</div>

我可能会在我的 View 规范中进行测试 -
expect(rendered).to match(/Thank You/)

但是,这可能会错误地失败或通过,具体取决于页面上是否还有其他内容也说“谢谢”。

如何在特定范围内搜索 <div>有问题?如果这是一个功能测试,我会使用 Capybara 来选择节点 -
within(".user-mssg") { expect(page.body).to have_content("Thank You") }

如何找到特定的 HTML 元素(例如 .user-msg )并在我的 View 规范中在其中进行搜索?

谢谢!

编辑:“谢谢!”

最佳答案

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>

规范:
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

关于ruby-on-rails-4 - 在 RSpec View 测试中的 HTML 元素中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510338/

相关文章:

jquery - Rails 4 Turbolinks 多重绑定(bind)

javascript - Rails 中 AJAX 请求后重定向到 html 响应

ruby-on-rails - Rspec:如何测试子字符串出现在字符串中一定次数?

ios - 从其他 View 推送 View Controller 时使用未声明的标识符 FirstViewController

java - 如何永远隐藏 View

css - 在移动设备上显示不正确/不同(响应)

ruby - rails ransack gem 搜索 json 列

ruby - 是否可以(甚至推荐)在 ChefSpec 中模拟 Ruby require 语句?

ruby-on-rails - RSpec - 处理救援 block 内的重试

ruby-on-rails - Rails 3 - 通知和错误 Flash 不能部分呈现