首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何继续种子RSpec运行?

如何继续种子RSpec运行?
EN

Stack Overflow用户
提问于 2015-05-28 16:33:03
回答 1查看 345关注 0票数 1

是否有一种方法可以重新启动种子RSpec,而不是从一开始就运行?

当进行可能影响大型代码库中所有文件(例如Bundler.require)的更改时,我希望运行一组完整的RSpec测试,修复第一个错误,然后用相同的种子重新运行测试。

代码语言:javascript
复制
$ cd myproj
$ rspec --seed=0 --fail-fast

...

Finished in 9 minutes 59 seconds (files took 12.09 seconds to load)
9999 examples, 1 failure, 0 pending

Failed examples:

rspec ./spec/my_class_spec.rb:22 # MyClass #my_method

Randomized with seed 0

此时,我意识到my_class.rb缺少了一个require。我修复了它,但我不想再次运行9998前面的示例。

我希望能够指定一个起点,如下所示:

代码语言:javascript
复制
$ rspec --seed=0 --from='./spec/my_class_spec.rb:22' --fail-fast

或者,如果rspec可以确定最后一次失败,这样的情况会更好:

代码语言:javascript
复制
$ rspec --seed=0 --continue --fail-fast

显然,在一般情况下,使用种子运行并不是一个好的实践,因为测试不应该依赖于顺序,但是它确实允许可重复性,这正是我现在正在寻找的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-28 18:02:56

RSpec不支持--continue标志。在整个套件中,最后一次运行的距离必须在两次运行之间保持一定的状态。它不会这样做(而且我们也没有这样做的计划),但是对于某个人来说,编写这样的扩展是相当容易的。

尽管如此,即将发布的RSpec 3.3包含了一个支持类似但略有不同的工作流的新功能:--next-failure

https://relishapp.com/rspec-staging/rspec-core/docs/command-line/only-failures

使用--next-failure,您将如何实现与您所要求的工作流类似的工作流:

  1. 运行rspec来运行整个套件。它将记录所有已执行示例的last_run_status,以便知道哪个失败。
  2. 重复运行rspec --next-failure (或者rspec --next-failure --seed 0,如果您想强制执行特定的随机排序,而不是使用定义的顺序)。RSpec将将运行的内容过滤为上次运行时失败的示例,并在失败时立即中止。

通过使用rspec重复运行--next-failure,您可以单独处理每个故障,而无需支付运行整个套件的成本。

注意,要使用这个新特性,首先必须配置example_status_persistence_file_path,以便RSpec知道在哪里保存每个示例的最后运行状态。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30512280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档