给出自动电子邮件通知的情况

时间:2016-06-23 18:30:41

标签: bdd gherkin user-stories

如果构建电子邮件通知方案,在特定状态更改后的1个工作日内必须发送通知,您会如何编写给定的?

这看起来不错吗?

Given that I'm the system 
  and the user of a particular type T
  and the state is S
When it is 1 business day after the date state was changed to x
then send an email notification with xxx content.

我有一个疑问的原因是我的理解是,给出了我们的前提条件,在这种情况下是A.特定类型的用户,B。状态是S和C.它是在州的日期之后的1天改变。

如果所有这些先决条件都在给定部分中,那么什么时候会出现在什么时候?我的理解是'when'部分用于事件触发器。除了运行通知作业之外,没有其他操作。那么这是正确的吗?

Given the user of a particular type T
  and the state is S
  and it is 1 business day after the date state was changed to x
When the email notification process triggered
  then send an email notification to all users of type T with xxx content.

我很感激你的想法

1 个答案:

答案 0 :(得分:2)

你走在正确的轨道上!

正如你在When之前所说的那样是一个触发器,所以让我们深入研究一下。

Gherkin用于行为驱动开发(BDD),因为您正在尝试模拟行为。

给定 - 输入 - 先决条件

这些是在动作或触发发生之前需要的东西。他们为将要发生的操作设置测试。

何时 - 触发 - 操作

这些是触发结果的用户行为。这是BDD中的B

然后 - 输出 - 结果

这是最终结果,用户在行为完成时应该期待什么。

你站在哪里

所以你处于一个有趣的境地,因为正如你所指出的那样,没有任何行为。所以这是一个棘手的部分,虽然具有Given-When-Then格式很好,但是在没有可靠的用户行为的情况下,它具有Given-Then或When-Then格式是完全有效的。那么在那种情况下:

Given it is 1 business day after the date state was changed to x

When it is 1 business day after the date state was changed to x

两者同样有效。

关于你的第二个代码块,你需要问自己的问题是the email notification process triggered触发器或结果?我个人认为这是输入的结果。如果你认为你需要它,那么我认为你应该写这样的测试:

Given there is a user of type T
And the state is S
And it is 1 business day after the date state was changed to x
Then the email notification process should have triggered
And send an email notification to all users of type T with xxx content.

奖励 - 如何说明您的测试并避免使用实施语言

不是你问的,但实际上有一种方法可以改善你的测试措辞。您希望将测试与实际实现分离。这意味着避免发送,单击或类型等单词,并关注行为和结果。参加考试我会像这样重写:

Given there is a user of type T
And the state is S
And it is 1 business day after the date state was changed to x
Then all users of type T should be notified of xxx

我删除了电子邮件通知步骤,因为可以从最后一步推断出来。我还将最后一步与实现语言分离。这里重要的不是用户收到电子邮件,而是通知他们内容。您的Given步骤也应根据您的业务逻辑进行更改,因为它们目前与您的实施非常相关。