IO.read(“#... / layouts / application.html.erb”)返回行“ applicatio ... s-track”而不是“ application”

时间:2019-02-01 16:08:43

标签: ruby-on-rails ruby rspec

我有以下rspec测试:

scenario 'layout file loads assets' do
    layout_file = IO.read("#{dummy_app_path}/app/views/layouts/application.html.erb")

    expect(layout_file).to match(/stylesheet_link_tag 'application'/)
  end

测试为红色是因为:

expected "<!DOCTYPE html>\n<html>\n<head>\n  <title>DummyApp</title>\n  <%= stylesheet_link_tag    'applicatio...s-track' => true %>\n 

为什么要返回应用... s-track ?为什么没有“申请”? 你能解释一下吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

尝试如下更改您的期望:

expect(layout_file).to match(/stylesheet_link_tag\s+application'/)

如果您查看错误消息以及实际的HTML源代码,则会看到以下内容:

<%= stylesheet_link_tag    'application'

请注意stylesheet_link_tag之后的多余空格。这就是从template一直生成它的方式(据我所知)