Ruby 我的 html.erb 文件中的代码在 Cucumber 测试期间未执行

Ruby code in my html.erb file not executed during Cucumber test

我正在 Rails 网络应用程序上创建一个 Ruby,并为我的其中一个视图创建一个 index.html.erb 文件,其中包含以下代码:

<div class="container" id="quickTickets">
    <% Game.all.each do |game| %>
        <h2>
            <%= link_to game.name, game_tickets_path(game.id), :id => "gameid_"+game.id.to_s %>
        </h2>
    <%end%>
</div>

当我在浏览器中查看代码时代码工作正常,并为每个链接到单独页面的游戏显示 header。但是,当我 运行 进行 Cucumber/Capybara 测试以模拟点击其中一个 header 时,它失败了。

测试失败,因为在 Cucumber 测试 运行 时没有执行上面的 Ruby 代码块,所以页面最终包含一个空的 <div>.

例如,当我调用 print page.html 来检查我的 Cucumber 测试正在运行的 HTML 时,它显示以下内容:

<div class="container" id="quickTickets">
</div>

我花了几个小时试图找到任何文档或以前类似的错误,但没有找到解决方案。有什么想法吗?

由于容器 div 在输出中,因此正在评估代码。可能发生的情况是您实际上没有要显示的 Game 对象。这是因为您没有在测试中创建任何游戏对象,或者是因为您使用的是支持 JS 的驱动程序并且没有将测试配置为不使用事务 (https://github.com/jnicklas/capybara#transactions-and-database-setup)