【问题标题】:Why don't spec/controller/pages_controller_spec.rb tests get triggered when I modify html.erb pages?为什么我修改 html.erb 页面时不会触发 spec/controller/pages_controller_spec.rb 测试?
【发布时间】:2011-02-16 14:34:03
【问题描述】:

问题摘要:当我更改文件中引用的任何页面时,自动测试是否应该“触发”我的任何 /pages_controller_spec.rb 测试?

示例:我在 spec/controller/pages_controller_spec.rb 文件中有一个测试,用于测试特定页面的标题 - 例如about.html.erb - 但是当我编辑该文件(关于文件)时,我的自动测试都不会触发。如果我重新加载自动测试或运行手动“rspec spec/”,所有测试都会通过 - 它们只是不会自动触发,这正是我想要的。


这似乎是设计使然,因为当我运行 autotest -v 时,它显示没有与所讨论的各个页面相关联的测试 - 摘录:

...
没有测试匹配 app/views/pages/contact.html.erb
没有测试匹配 app/views/pages/help.html.erb
没有测试匹配 app/views/pages/home.html.erb
...

我的所有测试都运行绿色顺便说一句,当我编辑与它关联的特定 _spec 文件的文件时,自动测试 + spork/etc 触发就好了(例如,我的示例中的上述文件 & app/controllers/pages_controller.rb )。真正困扰我的只是这些 html.erb 文件。

所以我想我真正的问题归结为:这个用户错误还是自动测试真的忽略了这些相关的 html.erb 文件?如果我想要测试这些文件,我是否必须编写明确的测试来命中这些文件?这对我来说似乎是错误的,因为我可以通过从 html.erb 文件中删除行/等来完全破坏我的测试(但不更改基本 pages_controller.rb 文件),在这种情况下自动测试不会触发测试..


环境细节等:

我正在使用 ZenTest/autotest 和 Spork 运行 rails 3.0.1。这个问题在 Spork 运行和不运行的情况下都存在,所以我猜它不相关,但这里是我的 Gemfile:

  source 'http://rubygems.org'

  gem 'rails', '3.0.1'
  gem 'sqlite3-ruby', :require => 'sqlite3'

  group :development do
    gem 'rspec-rails'
  end

  group :test do
    gem 'rspec-rails'
    gem 'webrat', '0.7.1'
    gem 'test_notifier'
    gem 'spork', '~> 0.9.0.rc'
  end

这是 Ubuntu 10.1,如果重要的话,它使用一个简单的 Kate/Terminal “IDE”。但我再次认为这是一个配置问题,而不是环境问题或错误。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 autotest


    【解决方案1】:

    据我了解,当您更改视图时,自动测试不会运行。您可以添加配置选项以添加要监视的特定路径。这是来自 RSpec github wiki 的示例,用于添加对集成测试的支持:

    Autotest.add_hook :initialize do |at|
      at.add_mapping(%r%^spec/(integration)/.*rb$%) {|filename, _|
        filename
      }
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-07
      • 2010-12-08
      • 2014-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多