【问题标题】:Rails generators not generating the proper test templatesRails 生成器没有生成正确的测试模板
【发布时间】:2012-08-27 19:48:23
【问题描述】:

我的项目住在这里:https://github.com/jonesdeini/ICanHazSandvich

我正在使用 minitest-rails add 进行设置,我无法让生成器生成正确的测试模板。

来自我的 application.rb:

config.generators do |g|
  g.test_framework :mini_test, :spec => true, :fixture => false
end

即使使用“g.test_framework nil”,我仍然会生成相同的测试模板:

输出:

rails g model Foo
    invoke  active_record
    create    db/migrate/20120827160129_create_foos.rb
    create    app/models/foo.rb
    invoke    test_unit
    create      test/unit/foo_test.rb
    invoke      factory_girl
    create        test/factories/foos.rb

即使使用“rails g model Foo --spec”,也会生成相同的文件。 我正在使用 rails 3.2.8 和 ruby​​-1.9.3-p194

感谢您的帮助!

宝石文件:

group :development, :test do
  gem 'factory_girl_rails'
  gem 'minitest-rails'
  gem 'minitest-rails-capybara'
 end

编辑:

已为此问题提交了拉取请求 https://github.com/thoughtbot/factory_girl_rails/pull/68

【问题讨论】:

  • 您是否将 minitest-rails 添加到您的 Gemfile 中?
  • 是的,先生,我已将我的 Gemfile 部分添加到 OP。谢谢!

标签: ruby-on-rails-3.2 generator minitest specifications


【解决方案1】:

问题在于factory_girl_rails gem。该 railtie 假设 rspectest_unit,其配置与您的配置冲突。以下是我将如何解决这个问题:

将依赖关系更改为Gemfile 文件中的factory_girl gem:

group :development, :test do
  gem 'factory_girl'
  gem 'minitest-rails'
  gem 'minitest-rails-capybara'
end

在您的 config/application.rb 文件中配置您的应用以使用 FactoryGirl:

config.generators do |g|
  g.test_framework :mini_test, spec: true, fixture: false,
                               fixture_replacement: :factory_girl
end

嗯,这并不完全正确。我真正解决它的方法是完全删除 FactoryGirl,但这是对另一个问题的答案......

【讨论】:

  • 太棒了,谢谢!不爱工厂女孩?你更喜欢固定装置还是其他东西?另外,感谢您的 minitest-rails!
  • 我更喜欢创建我需要的对象。如果您有一个复杂的设置,那么您应该通过更改代码的设计来感受并最终减轻这种痛苦。工厂往往会掩盖痛苦,当你最终感受到痛苦时,它会在你的应用生命周期的后期出现,并且更难解决。
  • 老兄,非常感谢。我真的很困惑发电机在我身上呕吐。
  • 这个解决方案给了我一个factory_girl [not found] 错误,尽管使用factory_girl_rails gem 的替代方法会覆盖spec 选项...
  • @blowmage 你提出了一个很好的观点。然而,抽象常见重复行为的能力是我们编写软件的原因。我只是提醒人们不要使用过于复杂的 FactoryGirl 工厂,因为它们有可能按照您的建议去做。我完全同意,但我也记得听到人们对为什么他们使用汇编语言而不是 C 提出类似的论点。哈哈
【解决方案2】:

factory_girl_rails gem 强制使用Test::Unit 的问题已由维护人员修复,但尚未过滤到rubygems.org

如果您将 Gemfile 更新为包含:

group :development, :test do
  gem 'factory_girl_rails', :git => "git://github.com/thoughtbot/factory_girl_rails.git"
end

一切都应该很好!

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 2015-11-17
    • 1970-01-01
    • 2016-01-09
    • 2010-10-02
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    相关资源
    最近更新 更多