【发布时间】:2014-11-18 10:21:53
【问题描述】:
在通过端到端测试测试大型分布式系统时,我有以下场景:
Class A < Minitest::Spec
before do
# stuff
setup_runtime_environment
end
end
Class B < Class A
before do
# stuff
end
end
Class C < Class B
before do
# stuff
end
end
某些测试仅继承自 Class A - 它是最通用的,包括与测试整个系统相关的内容。
Class B 更具体 - 它包括与大量测试相关的内容,但仍需要通过Class A 中的setup_runtime_environment 方法设置
Class C 是最具体的 - 它包含仅与一小部分测试相关的内容,但仍需要通过 Class A 中的 setup_runtime_environment 方法设置
问题在于,运行时环境,出于各种测试目的,在运行“整体”测试、“一般”测试和“特定”测试时需要进行不同的配置,并且需要在之前进行配置 它被初始化。
所以我可以将 setup_runtime_environment 方法添加到每个 before 块的末尾。但更理想的方法是在运行规范之前立即运行该方法。一个“just_before”块。有谁知道这样做的方法吗?
澄清一下:
如果我正在运行“整体”规范 - 仅从 Class A 继承的规范,堆栈看起来像这样,假设“A”是 Class A 中的前块,“s”是 setup_runtime_environment :
A -> s -> running of specs
同样,如果我正在运行特定规范 - 继承自 Class C 的规范,堆栈将如下所示:
A -> s -> B -> C -> running of specs
我希望在任何链的最后调用“s”:
A -> s -> running of specs
或
A -> B -> s -> running of specs
或
A -> B -> C -> s -> running of specs
这就是我所说的“就在之前”——就像在规范运行之前一样。
【问题讨论】:
-
我不确定您所说的“之前”是什么意思。 AFAIK,
before块 is 在每次测试之前运行(如Minitest::Test中的setup方法)。 -
对不起,我意识到这有点令人困惑。我将编辑原始帖子。
标签: ruby unit-testing minitest