首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在BDD中绕过服务层并更改测试设置的数据状态是正确的吗?

在BDD中绕过服务层并更改测试设置的数据状态是正确的吗?
EN

Stack Overflow用户
提问于 2014-12-09 18:38:08
回答 1查看 181关注 0票数 1

使用SpecFlow,我们调用了API服务层,然后与持久层进行对话。我们的大多数场景都可以很好地使用API将数据库设置为不同的状态,但是有几种场景不可能通过API进入数据库,因为它们是失败状态。

我们在想,我们可以创建一个与SpecFlow解决方案对话的层,该层反过来将数据库“伪造”成这种状态,这样我们就可以调用API层来检查我们是否得到了预期的响应。然而,就BDD而言,这是正确的吗?我对BDD的理解非常类似于ATDD,在ATDD中,您测试您的主要愉快路径和异常路径,并且应该对细粒度内容进行单元测试。

如果您不能通过API执行某些操作,那么它是否应该在BDD场景中进行测试?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-09 19:38:05

我不认为这样做有什么问题。

实际上,您的Given步骤应该能够完成必要的工作,以便在测试需要时将系统置于测试设置之下。您正在测试的是When并使用Then对其进行验证。

如果这些给定的步骤总是能够通过API完成设置,那么这两个步骤都有很好的测试覆盖率,但是在某些情况下(正如您已经描述的那样),您无法使用API轻松地使系统进入所需的状态。在这种情况下,您可能需要将给定的步骤直接插入到数据库中,或者调用一些测试服务来设置状态。

您还可能会发现,如果您的操作结果无法通过API公开可见,则需要对您的Then步骤执行类似的操作。

您可能还会发现,实际上调用API太慢或太长,无法完成所需的设置(特别是对于复杂的工作流),因此您可以选择在给定的步骤中将数据直接插入数据库,以便测试更快,并且不需要进行如此复杂的设置。

但是,请注意,如果数据库模式更改,则可能需要更新API实现并更新直接插入数据的步骤。

这个成本是否值得承担是你必须决定的事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27386359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档