Rails Spring / Rspec / Guard在Spring之前没有错误时给出错误

时间:2014-04-19 00:06:14

标签: ruby-on-rails ruby rspec guard spring-gem

在从Rails 4.0升级到4.1之前,我正在使用没有Spring的RSpec / Guard,并且除了绿点和绿色文本之外我的所有测试都没有任何输出。在升级并安装Spring以及我认为需要的任何其他内容后,我在通过测试时遇到错误,有时我的测试由于“唯一性”错误而无法通过。

传递和失败测试之间的常见错误:

An error occurred in an after(:all) hook.
  NameError: uninitialized constant Recipe
  occurred at /home/user/.rvm/gems/ruby-2.1.0@global/gems/activesupport-4.1.0/lib/active_support/inflector/methods.rb:238:in 'const_get'

现在,after(:all)钩子只删除所有Manager :: Wine对象(以及一个Manager :: Wine对象has_many配方)。 Manager是一个rails引擎,它有Wine和Recipe模型。 Wine类中没有任何地方明确指定配方常量。但正如我之前所说,在我升级并安装Spring之前,这个错误并未出现在常规的RSpec / Guard测试中。

其他失败是'已经采取的属性'的结果。例如,标准的'有效工厂'测试因创建()而失败。但我在RSpec中指出:

config.before(:each) do
    DatabaseCleaner.start
end

我在Spring之前的随机测试中没有得到这些错误。

Gemfile片段:

group :development, :test do
    gem 'spring'
    gem 'rspec-rails'
    gem 'guard'
    gem 'guard-rspec', require: false
    gem 'spring-commands-rspec'
    gem 'factory_girl_rails'
    gem 'database_cleaner'
end

Guardfile包含:

guard :rspec, cmd:"spring rspec" do

Rails app_root / bin包含文件:

rails
rake
rspec
spring

???

1 个答案:

答案 0 :(得分:0)

真奇怪。之前我没有收到过这个问题的通知,但是应用程序不再能够确定葡萄酒和食谱之间的HABTM关系。我更新了我的模型以包含join_table参数,我不再获得未定义的常量'错误。我只是发现了这个,因为我在浏览器中加载了应用程序,并得到了更好的错误消息来处理。仍然遇到重复输入的问题'的问题。

此外,我删除了每个模型上的destroy_all调用,因为我认为考虑到DatabaseCleaner在每个任务之后运行,这是不必要的。