2013-07-06 20 views
0

我有一个使用Test :: Unit的测试套件的Rails项目。我试图设置Guard和Spork自动运行我的测试并在通过/失败时发出通知; Guard和Spork运行良好,并在启动时发出通知,但我无法获得任何测试通知。我试过用terminal-notifier-guard同时使用Growl和Mac OS X通知。通知不适用于Mac上的Test :: Unit:

这里是我的Gemfile的相关部分:

group :test do 
    gem 'sqlite3' 
    gem 'selenium-webdriver' 
    gem 'rr', :require => false 
    gem 'capybara' 
    gem 'database_cleaner' 
    gem 'timecop' 
end 

group :test, :development do 
    gem 'guard' 
    gem 'spork' 
    gem 'spork-testunit' 
    gem 'guard-test' 
    gem 'guard-rake' 
    gem 'guard-spork' 
    gem 'terminal-notifier-guard', :require => false 
    gem 'rb-inotify', require: false 
    gem 'rb-fsevent', require: false 
    gem 'rb-fchange', require: false 
end 

而且test_helper.rb中:

# -*- encoding : utf-8 -*- 
require 'rubygems' 
require File.expand_path('../../config/environment', __FILE__) 
require 'rails/test_help' 
require 'spork' 

Spork.prefork do 
    require 'rubygems' 
    ENV["RAILS_ENV"] = "test" 
    require 'capybara/rails' 
    require 'database_cleaner' 
    require 'rr' 
    require 'ostruct' 
    require "#{Rails.root}/test/test_support" 

    class ActionController::TestCase 
    include Devise::TestHelpers 
    def teardown 
     super 
     Timecop.return 
    end 
    end 

    class ActionDispatch::IntegrationTest 
    self.use_transactional_fixtures = false 
    include Capybara::DSL 
    Capybara.default_driver = :selenium 
    DatabaseCleaner.strategy = :truncation 

    def setup 
     super 
     DatabaseCleaner.clean 
    end 

    def teardown 
     super 
     DatabaseCleaner.clean 
     Timecop.return 
    end 

    def login_admin(admin=nil) 
     admin = Admin.create!(:email => "[email protected]", :password => "sloppy") if !admin 
     visit "/admins/sign_in" 
     fill_in "admin_email", :with => admin.email 
     fill_in "admin_password", :with => admin.password 
     click_on "log in" 
     admin 
    end 
    end 
end 

Spork.each_run do 
    # This code will be run each time you run your specs. 

end 

我不知所措。任何帮助将不胜感激。

+0

看起来这是'guard-test'的问题。根据[文档](https://github.com/guard/guard-test#drb-选项),使用DRb时通知是不可能的。我使用'guard-minitest'取得了一些成功。 – amd

回答

0

尝试使用咆哮进行通知。

要做到这一点,评论#gem "terminal-notifier-guard"并添加

gem 'growl', require: false 

添加以下Guardfile的开头:notification :growl, sticky: true

验证低吼安装工作,请运行:rails c及以下

Growl.notify { 
    self.message = 'Hello World' 
    self.icon = :jpeg 
    sticky! 
} 

卫队应与低吼现在的工作。

+0

仍然没有运气。我可以在控制台中和'Spork.each_run'块中启动通知,但是当测试运行时,我仍然没有看到任何东西。 – amd

0

我一直在争取这个同样的问题数月,就在今天上午修复它。我曾经试图在gem growl如其他答案建议,但今天上午我在他们建议你尝试ruby_gntp,然后再使用growl如果你有问题的documentation找到。

更改您的Gemfile使用gem ruby_gntp

确保您有低吼V> = 1.3

此行添加到您的Guardfile的顶部:

notification :gntp, :sticky => true, :host => '127.0.0.1' 

和一切都进展顺利到位为了我。我还必须确保Growl在我的机器上运行,而不仅仅是安装。我个人从App Store购买了v.2.0.1,因此我只是在启动时启动它。希望这可以帮助!

+0

我得到了与其他答案相同的结果;我可以在控制台和'each_run'块中触发通知,但测试运行时我什么都看不到。 – amd

+0

当你启动它时Guard的输出是什么?是否说“警卫使用_____来通知”或类似的东西?在我做出这些改变之前,我的卫队列出了两种形式的通知,我认为这是很奇怪的。在将该行添加到Guardfile后,第二行消失了。 –

+0

我得到了'TerminalNotifier'和'TerminalTitle';我在我的Guardfile中添加了'notification:terminal_notifier',现在我只能得到'TerminalNotifier'。在使用'guard-test'时仍然不会生成通知 – amd