0

如何在以下生成的输出中设置类的顺序:

rspec --format doc

我希望最重要的类(由我定义)首先出现在生成的文档中。

4

2 回答 2

1

Ash 提供了一种简单的方法,并提到了走这条路的主要注意事项。

如果您想在有序输出的同时保持随机测试,您需要编写一个支持有序输出的新 RSpec 格式化程序。考虑到所有因素,格式化程序非常简单;他们实现了 BaseFormatter 定义的协议,然后输出他们认为合适的东西。您可能会从默认的 DocumentationFormatter 代码中寻找灵感。

假设您不需要此代码可广泛重用,您甚至可以在格式化程序中对顺序进行硬编码,并跳过读取配置文件的任务(相当简单,因为它是 Ruby)。

于 2013-11-04T17:05:17.170 回答
1

如果您提供选项--order defaultrspec则按照底层文件系统强加的顺序执行测试:通常在 *NIX 上区分大小写字母,在 Windows 上不区分大小写字母。--order default因此,您可以通过在.rspec文件中设置来控制执行顺序:

ash@dev ~/src/rspec-order $ cat .rspec
--color
--format doc
--order default

然后,使用数字前缀命名您的规范文件和目录,这些前缀将按您想要的顺序排序:

ash@dev ~/src/rspec-order $ ls -l spec/
total 12
-rw-rw-r-- 1 ash ash  96 Nov  4 16:04 001_first_spec.rb
-rw-rw-r-- 1 ash ash 106 Nov  4 16:05 002_second_spec.rb
-rw-rw-r-- 1 ash ash 734 Nov  4 16:03 spec_helper.rb

作为旁注,您放弃这样做的一件事是能够发现在您的规范中意外引入的排序依赖关系。

于 2013-11-04T16:19:11.503 回答