--RSpec 中的种子选项

--seed option in RSpec

有谁能解释一下这到底是什么意思?文档似乎说它类似于设置订单 (--seed 123 # same as --order rand:123),但据我所知,似乎没有进一步深入。我假设它与数据库种子数据无关,但我很可能是错的。

在默认配置中,RSpec 运行 以随机顺序进行测试。

这实际上是一个很好的做法,因为测试应该相互独立。 运行 它们以随机顺序排列有助于找到仅当它们以特定顺序排列 运行 而在另一个顺序排列时失败的测试。

但问题是:当 RSpec 运行 以随机顺序进行测试然后失败时,您如何重新 运行 再次以完全相同的顺序进行测试以调试问题?

这可以通过告诉 RSpec 使用与之前使用的随机性相同的种子来实现。

RSpec告诉你这个种子什么时候开始:

$ rspec spec

Randomized with seed 48111
.....*.........

以完全相同的顺序重新运行规格运行:

$ rspec spec --seed 48111

在这种情况下阅读 Random#seed 可能会很有趣。