从RSpec迁移到Minitest::Spec?

从RSpec迁移到Minitest::Spec?,rspec,minitest,Rspec,Minitest,从RSpec 2迁移到MiniTest::Spec,是否有一套策略或步骤?我很想为一个大型项目做一次这样的尝试,但我不确定从哪里开始。我已经很久没有使用MiniTest::Spec了,我自己也在进行一些测试的移植,但我注意到RSpec中有几点: 匹配器当然是不同的——它是必须/不会而不是应该/不应该,谓词匹配器不见了,所以你不能说必须是真的/必须是假的等等 也就是说,如果您已经编写了定制的RSpec匹配器,或者正在使用shoulda匹配器或类似的工具,那么由于MiniTest matchers

从RSpec 2迁移到
MiniTest::Spec
,是否有一套策略或步骤?我很想为一个大型项目做一次这样的尝试,但我不确定从哪里开始。

我已经很久没有使用MiniTest::Spec了,我自己也在进行一些测试的移植,但我注意到RSpec中有几点:

  • 匹配器当然是不同的——它是
    必须
    /
    不会
    而不是
    应该
    /
    不应该
    ,谓词匹配器不见了,所以你不能说
    必须是真的
    /
    必须是假的
    等等
  • 也就是说,如果您已经编写了定制的RSpec匹配器,或者正在使用shoulda匹配器或类似的工具,那么由于MiniTest matchers gem,您应该能够将它们与MiniTest一起使用。但是YMMV
  • MiniTest::Spec不提供
    上下文
    ,因此您需要将其更改为
    描述
    或将其别名
  • MiniTest::Spec也不提供
    描述的\u类
  • 您之前也没有
    :all
  • subject
    必须手动设置(我想,如果我错了,有人会纠正我)

因此,为了回答您的问题,就移植现有的测试套件而言,恐怕您不能真正进行简单的查找和替换,您必须一次移植一个测试文件。显然,这意味着您必须确定所付出的努力是否值得。

当我最近看到MiniTest时,我对它没有太大印象;我决定暂时坚持RSpec。这就是说,如果MiniTest改进为与RSpec竞争,这可能会成为一个好主意。自从上一篇评论撰写以来,MiniTest已经成熟了很多,现在Rails、Nokogiri和许多其他人都在使用它。MiniTest支持
subject{}
(我认为它可能必须是手动的,但无论如何,我总是在RSpec中显式地设置它),尽管它似乎不适用于
it{}
语法。它有自己的谓词匹配器,你只需要做
必须是:有效的?
而不是RSpec的
应该是有效的。