3

我正在使用带有 ruby​​ on rails 的自动测试。我跑步时通过了 2 次通过测试。rspec spec/; 但是,当我尝试使用自动测试时,这是输出:

matt@matt-laptop:~/sample_app$ autotest
loading autotest/rails_rspec2
style: RailsRspec2
matt@matt-laptop:~/sample_app$

我没有得到关于测试结果的输出。同样的事情适用于bundle exec autotest. 我看到一个帖子推荐autospec,但该命令已被 rspec2 弃用。我的 Gemfile 是

source 'http://rubygems.org'

gem 'rails', '3.0.5'
gem 'sqlite3-ruby', '1.3.2', :require => 'sqlite3'

group :development do
  gem 'rspec-rails', '2.5.0'
  gem 'autotest','4.4.4'
end

group :test do
  gem 'rspec', '2.5.0'
  gem 'webrat', '0.7.1'
  gem 'autotest', '4.4.4'
  gem 'redgreen', '1.2.2'
end

我尝试将 .autotest 配置文件放在我的项目的根目录以及主目录中,并且对输出都没有影响。我的 .autotest 文件看起来像这样

#!/bin/ruby
require 'autotest/timestamp'

module Autotest::GnomeNotify
  def self.notify title, msg, img
    system "notify-send '#{title}' '#{msg}' -i #{img} -t 3000"
  end

  Autotest.add_hook :ran_command do |at|
    image_root = "~/.autotest_images"
    results = [at.results].flatten.join("\n")
    results.gsub!(/\\e\[\d+m/,'')
    output = results.slice(/(\d+)\sexamples?,\s(\d+)\sfailures?(,\s(\d+)\spending?|)/)
    full_sentence, green, failures, garbage, pending = $~.to_a.map(&:to_i)
  if output
    if failures > 0
      notify "FAIL", "#{output}", "#{image_root}/fail.png"
    elsif pending > 0
      notify "Pending", "#{output}", "#{image_root}/pending.png"
    else
      notify "Pass", "#{output}", "#{image_root}/pass.png"
    end
  end
 end
end

我还检查了 libnotify-bin 是否已安装并正常运行。

4

2 回答 2

1

要从 rspec 获取详细结果,请在根项目文件夹中创建一个 .rspec 文件并写入:

--format documentation

如果可以的话,请允许我建议 watchr 而不是 autotest(也可以使用 spork)。非常容易设置并且非常有效。

看一眼

http://www.rubyinside.com/how-to-rails-3-and-rspec-2-4336.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+RubyInside+%28Ruby+Inside%29

如果你喜欢。

于 2011-03-02T07:56:12.797 回答
0

我在使用 Autotest 时遇到了同样的问题。我不确定,但我相信依赖版本可能非常挑剔。我是一个 Rails 菜鸟,但由于我最近分享了你的麻烦,让我向你展示我为解决问题所做的工作:

通过删除 .autotest 文件中的所有代码并将其替换为:

require 'autotest/growl'
require 'autotest/fsevent'

需要明确的是,第二行仅适用于您使用 OSX 的情况。我认为您可以安全地删除 .autotest 文件中的所有“代码”,因为它与手动“红/绿”咆哮通知有关,一旦安装了“红绿”gem,就不再需要了。简而言之,您最终会得到一两行 .autotest 文件。

以下是我通过 gem 安装的一些文件(有些文件,如 rspec-expectations,应该作为依赖项自动安装)。以下文件是我认为应该与您的 Autotest 设置相关的文件,这些文件是在编写此响应之前 10 分钟的最新版本。

  • 自动测试(4.4.6、4.3.2)
  • 自动测试 fsevent (0.2.5, 0.2.2)
  • 自动测试咆哮(0.2.9,0.2.4)
  • autotest-rails-pure (4.1.2, 4.1.0)
  • 红绿 (1.2.2)
  • rspec-core (2.5.1, 2.0.0.beta.18)
  • rspec-expectations (2.5.0, 2.0.0.beta.18)
  • rspec-mocks (2.5.0, 2.0.0.beta.18)
  • rspec-rails (2.5.0, 2.0.0.beta.18)
  • 叉子 (0.8.4)
  • 韦拉特 (0.7.3)
  • 禅测 (4.5.0)

执行gem list命令以查看您安装了哪些。更新版本和简化 .autotest 文件可能很简单(如果您关心位置,我的主目录中有我的文件)。另外,不要忘记 autotest-fsevent 文件只适用于 OSX。

PS 除非您在 spec/controllers/spec_helper.rb 文件的最后添加一些额外的代码,否则您可能仍然会遇到无法解释的自动测试错误:

# Webrat configuration
Webrat.configure do |config|
config.mode = :rails
end
于 2011-04-06T05:05:39.120 回答