如何在 Rails 的集成测试中访问 View helper?

Posted

技术标签:

【中文标题】如何在 Rails 的集成测试中访问 View helper?【英文标题】:How to access View helper in integration test in Rails? 【发布时间】:2016-03-07 06:41:44 【问题描述】:

我的 Rails 视图中有以下代码

 <li><span class="list-group-item-bullet"><%= icon('eye') %></span>

生成以下 html

<li><span class="list-group-item-bullet"><i class="fa fa-eye"></i></span>

我想在我的集成测试中验证这件事,我正在使用以下代码,它会产生错误

 assert_select 'li' do
   assert_select 'span.list-group-item-bullet', 'i.fa fa-eye'
 end

如何在我的集成测试中验证它?

【问题讨论】:

我想你只是忘记了将 fa-eye 识别为一个类的“点”:assert_select 'span.list-group-item-bullet', 'i.fa.fa-eye' 不,我也尝试了您的解决方案,但它不起作用 【参考方案1】:

以下似乎可行:

assert_select 'li' do
  assert_select 'span.list-group-item-bullet' do
    assert_select 'i.fa.fa-eye'
  end
end

或者更简洁,

assert_select 'li span.list-group-item-bullet i.fa.fa-eye'

Taglia 是正确的,您需要 'i.fa.fa-eye' b/c 'i.fa fa-eye' 查找具有 fa 类和后代 fa-eye 标记的 i 标记。

【讨论】:

以上是关于如何在 Rails 的集成测试中访问 View helper?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中测试助手?

独立测试rails部分视图

如何在测试之间重复使用 Capybara 会话?

Rails - 失去与集成测试和 Capybara 的会话 - CSRF 相关?

Rails view_context

集成测试ActionMailer和ActiveJob