当我在终端输入rake命令时,为什么我的minitest.rake会运行两次?

5
我根据Ryan Bates在railscast(http://railscasts.com/episodes/327-minitest-with-rails)中的指示创建了一个minitest.rake文件。

当我在终端运行rake时,测试会运行一次,然后再次运行以重置命令行。

require "rake/testtask"

Rake::TestTask.new(:test => "db:test:prepare") do |t|
  t.libs << "test"
  t.pattern = "test/**/*_test.rb"
end

task default: :test
3个回答

3

只需将rake文件重命名为唯一的名称;例如mintest1.rake

当我将我的rake文件命名为paperclip.rake时,我遇到了同样的问题。无论我在那个rake文件中定义什么,它都会执行两次。我猜这是因为Paperclip gem已经定义了一个rake文件paperclip.rake。所以我只是将我的paperclip.rake文件重命名为pc.rake,然后它就可以正常工作了。


与Paperclip任务完全相同的问题;谢谢! - Avael Kross

3

我猜你已经定义了一个这样命名的任务。如果你定义了一个同名的新任务,它会被追加到已存在的任务中。

如果你删除或注释掉这段代码并执行rake -T命令,test任务是否还在呢?


我该如何找到这个?这是我lib/tasks目录中唯一的文件。 - Brian Petro
如果您在Rails中使用它,它已经有了test任务。如果您删除或注释掉您的任务代码并执行rake -T,那么test任务还会存在吗? - khustochka
在那儿。如果我继续使用“rake test”并完全删除我的代码,这样可以吗? - Brian Petro
如果您对您的测试感到满意,那就好。如果您仍想尝试minitest,很抱歉我无法回答。Railscast是付费的,所以我不知道Ryan Bates如何解决这个问题。 - khustochka
在这一集中,他生成了一个应用程序,并传入“-T”以跳过测试文件。为了配合这一集,我删除了我生成的“测试文件夹”的所有内容。我原始帖子中的代码正是railscast指示在lib/tasks文件夹中使用的代码。我的猜测是当运行“rails new -T”时,默认的“rake test”也被排除在外。 - Brian Petro
2
是的,你说得对,我刚刚检查了一下,rails new -T 生成了一个略微不同的 config/application.rb 文件,在其中加载了所有的 Rails 组件,但是跳过了 rails/test_unit/railties,因此这个 rake 任务不存在。 - khustochka

0
你尝试过 rake test:single TEST=path/to/test.rb 吗?
如果我去掉 :single,它会运行两次。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接