在 BDD 中测试应用程序状态

Testing Application State in BDDs

假设我有一个包含三个步骤的 API:

  1. 创建报价单
  2. 添加产品报价
  3. 创建付款
  4. 充电
  5. Mutate(更新我数据库中的文档)

我正在为此写 BDD API。我的问题是,通过上述步骤后,我是否应该检查文档是否更新?或者如果上述任何步骤失败,文档不应被修改?

我问这个问题是因为 BDD 是供产品阅读的。那么好吧,产品应该可以看到充值成功了,但是产品需要看数据库有没有更新吗?这对他们来说不是太技术化了吗?

测试这些步骤的正确方法是什么,尤其是当它们是您的操作链的最后一步时?

Should I check if the document is updated after the above steps have passed? Or that the document should not be mutated if any of the above steps have failed?

答案是"yes"。

当所有步骤都通过后,您应该检查文档是否已更新。

如果任何步骤失败,您应该有其他场景突出显示文档更新的事实。事实上,这感觉像是 5 个独立的场景:

  1. 一切顺利,文档已更新
  2. 第一步失败,文档未更新。
  3. 第一步通过,但第二步失败。文档未更新。
  4. 第一步和第二步通过,但第三步失败。文档未更新。
  5. 第一步到第三步通过,但 "Charge" 步骤失败。文档未更新。

虽然产品团队主要考虑场景 1,但如果您向他们介绍场景 2-5,您很快就会了解到他们也关心这些​​场景。