Ruby on rails 微型测试和Rspec
我刚刚看了一场小型测试Ruby on rails 微型测试和Rspec,ruby-on-rails,ruby,testing,rspec,minitest,Ruby On Rails,Ruby,Testing,Rspec,Minitest,我刚刚看了一场小型测试 使用RSpec和Minitest测试rails应用程序的优缺点是什么?从RSpec转换为Minitest时,我会丢失哪些功能?我使用shoulda从测试/单元转换为规范样式的Minitest,这是值得的。它废除了样板文件,他们说它还提高了速度。我从未真正使用过RSpec。相反,我编写了自己的原始测试和模拟框架(只是为了理解模拟,我在切换到Minitest时放弃了它)。我认为RSpec中的stubing/mock可能更高级,所以如果您已经学会了,就继续使用它吧。否则,请坚持
使用RSpec和Minitest测试rails应用程序的优缺点是什么?从RSpec转换为Minitest时,我会丢失哪些功能?我使用
shoulda
从测试/单元转换为规范样式的Minitest,这是值得的。它废除了样板文件,他们说它还提高了速度。我从未真正使用过RSpec。相反,我编写了自己的原始测试和模拟框架(只是为了理解模拟,我在切换到Minitest时放弃了它)。我认为RSpec中的stubing/mock可能更高级,所以如果您已经学会了,就继续使用它吧。否则,请坚持使用Minitest,这将使您能够与不了解RSpec的人合作,例如我。我是RSpec开发人员之一,从未使用过Minitest,因此在阅读此答案时请考虑我的偏见
总的来说,RSpec的力量来自这样一个事实:它将如此多的测试概念具体化为第一类对象。当Test::Unit和Minitest使用简单的方法进行断言时,RSpec使用支持否定、自描述等的一流matcher对象。RSpec的例子是支持丰富元数据的一流对象;minitest/spec将it
块编译成简单的方法,这些方法不支持相同种类的丰富元数据。RSpec支持使用接受参数的一级构造(共享示例组)指定共享行为;您可以使用w/minitest,但它没有相同种类的一流支持。RSpec有一个显式的格式化程序API(有许多第三方格式化程序使用它);我不知道minitest有相同种类的一流格式化程序API
作为一个整天不断运行测试和练习TDD的人,我发现RSpec给我的力量非常有用。然而,许多人发现这是过分的,额外的抽象会增加认知成本
以下是我认为minitest缺乏的RSpec的一些特定功能:
before(:all)
hooks(注意这是RSpec的超级用户特性,应该很少使用;在使用RSpec的多年中,我只在少数情况下使用过它)
周围(:每个)
挂钩
- 共享示例组
- 共享上下文
- 丰富的元数据支持,可用于控制哪些示例运行、哪些示例组共享上下文包含在其中、哪些示例组模块混入其中等等
- 集成支持多种模拟功能,包括rspec模拟;相比之下,Minitest::Mock更简单,也更有限
- RSpec有,这太棒了
使用Minitest的好处:
- 它内置于标准库中,因此您不需要安装任何额外的内容
- 它可以在
def test_blah
或It'blah'
样式中使用
- 代码库非常小且简单。相比之下,RSpec更大,因为它的年龄更大,功能更丰富
- Minitest的加载速度比RSpec快(它大约有4个代码文件,而RSpec有许多文件分布在3个gem上)——但请注意,RSpec绝不慢;在我这些天的大多数项目中,我在不到一秒钟的时间内(通常在不到500毫秒的时间内)从RSpec获得测试反馈
总的来说,它有点像Sinatra vs.Rails,我认为Minitest和RSpec都是不错的选择,这取决于您的需要
最后一件事:如果您更喜欢Minitest的某些特定方面,但是您更喜欢RSpec的其他方面,那么它们可以很容易地混合和匹配。I,如果您感兴趣的话。请参阅,例如,也许这两个问题应该合并,有没有合并问题的方法?以+12票结束!!!投票开放。投票接近的问题是,他们通常不是很有建设性的……只要提到2020年的rspec fire
是“完全过时的”,其功能内置于rspec 3本身。