BDD中的隔离行为

问题描述 投票:0回答:1

假设我有一个程序连续执行三项操作:

  1. Task 1
  2. Task 2
  3. Task 3

现在假设我想为任务2写BDDs。让我们说说它失败了。现在,仅在Task 2成功后才执行Task 1。但是任务1本身可以通过许多方式成功(例如,如果下游系统以固定次数响应错误,我们的程序将重试Task 1)。我的问题是,为Task 1编写测试时,我应该考虑Task 2的所有行为吗?

Given_Task2Fails_Task1IsRetried_Expect_SomeBehaviour

Given_Task2Fails_Task1IsNotRetried_Expect_SomeBehaviour

如果是这种情况,那么我需要创建每个任务的所有排列和组合,并使任务2保持不变。这会炸毁具有大量重复代码的方案。这就是我的意思:

Given_Task2Fails_Task1IsRetried_Task3IsNotRetried_Expect_SomeBehaviour

Given_Task2Fails_Task1IsNotRetried_Task3IsNotRetried_Expect_SomeBehaviour

Given_Task2Fails_Task1IsRetried_Task3IsRetried_Expect_SomeBehaviour

Given_Task2Fails_Task1IsNotRetried_Task3IsRetried_Expect_SomeBehaviour

在这种情况下,如何编写可靠的方案?理想情况下,我希望更改系统中的每个参数,并保持Task 2不变。但这就像蛮力一样,我很确定那里有更好的方法。

unit-testing testing integration-testing bdd
1个回答
0
投票

[为任务2编写测试时,您应该假设任务1已成功完成。在验证任务2的行为的测试中,不需要捕获任务1并恢复的各种方式。

Given Task 1 succeeded
When Task 2 is performed
Then Outcome 2 should have happened

当任务1失败时会发生什么,甚至不必担心断言任务1成功的测试。实际上,任务1失败的各种方式都可以(并且可能

© www.soinside.com 2019 - 2024. All rights reserved.