unit-testing - 在 BDD 中测试应用程序状态

标签 unit-testing testing cucumber tdd bdd

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

  1. 创建报价单
  2. 将产品添加到报价
  3. 创建付款
  4. 收费
  5. 改变(更新我数据库中的文档)

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

我问这个问题是因为 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?

答案是"is"。

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

如果任何步骤失败,您应该有额外的场景来强调文档更新的事实。事实上,这感觉像是 5 个独立的场景:

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

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

关于unit-testing - 在 BDD 中测试应用程序状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56953782/

相关文章:

java - Cucumber 中的 Rerun.txt 指的是类路径而不是 Feature 文件夹

php - 是否有基于 PHP 的 Python Nose 实现?

iphone - 使用 NSLocalizedString 对 iPhone 代码进行单元测试

api - Jmeter View Results Tree 不返回响应数据中的任何内容

android - 如何测试 Robospice GoogleHttpClientSpiceRequest?当前正在为 HttpRequestFactory 获取 NullPointerException

node.js - xpath 上升到父级然后返回到子级

c# - 如何实例化内部私有(private)类的PrivateType

Android Studio - 测试 - 每种运行类型之间有什么区别?

testing - 如何测试程序是否退出

java - 使用 Gradle 任务将 Cucumber 与 Jenkins 集成