我有一些上下文和/或块的共享示例,我需要在该文件中的所有其他示例组执行后执行。 (这个顺序依赖的原因是我测试了很多不同的过滤器选项,这个特定的测试迭代了所有未经过特定测试的预定义过滤器设置,并且应该测试它们的基本功能/在常见结果中。)
我确实希望保留所有其他示例(RSpec.configure { |config| config.order = :random }
)的随机顺序。
after(:context)
对我不起作用,因为我不能include_examples
从那里开始。
RSpec::Core::ExampleGroup::WrongScopeError: `include_examples` is not available from within an example (e.g. an `it` block) or from constructs that run in the scope of an example (e.g. `before`, `let`, etc). It is only available on an example group (e.g. a `describe` or `context` block).
我一直在研究压倒一切的订单,一个可行的选择似乎是:
RSpec.configure do |config|
config.register_ordering(:append_to_random) do |items|
items.randomize
items << tests_to_append
end
end
(.randomize
应该是这里一些随机化逻辑的同义词)
然后以某种方式识别tests_to_append
(可能使用标签?)。
但这似乎是一种非常 hacky 的方式,实现某些东西,理论上非常简单。
所以我的实际问题是,如果有更好/好/性感的方法来实现这个目标吗?