gpt4 book ai didi

testing - 模拟......和验证者?

转载 作者:行者123 更新时间:2023-11-28 20:10:10 26 4
gpt4 key购买 nike

目前,我正在更深入地研究测试技术,尽管我不确定我是否仍然停留在单元测试领域或已经将其留在集成测试领域。

让我详细说明一下,给定两个组件 A 和 B,并且 A 使用 B,那么我们有 B 的特定“向上契约”和 A 的特定“向下契约”。基本上这意味着:如果 A 使用B 正确并且 B 行为正确,那么两个契约(Contract)都将得到履行并且事情将正常进行。

我认为模拟是一种保证给定测试用例所需的向上契约子集的方法。例如,数据库连接可能具有向上契约以检索数据记录(如果它们之前已被插入)。数据库连接模拟保证返回某些记录,而不需要将它们插入数据库。

但是,我目前想知道是否有一种方法也可以验证向下合约。以数据库连接为例,向下契约可能是:您必须连接到数据库并确保连接存在且有效,并输入正确的 SQL 查询。

有没有人做过这样的事情?这值得为更复杂的契约(Contract)工作吗? (例如,数据库连接可能需要 SQL 解析器才能完全验证对数据库层的调用)

你好,你好

最佳答案

这真的是difference between mocks and stubs - mocks 准确地验证了这一点(或者至少可以这样做 - 你可以将 mocks 用作大多数框架的 stub )。本质上,模拟允许您进行协议(protocol)测试,而不仅仅是“如果您调用 X,我会给您 Y”。我使用的每个模拟框架都允许您轻松验证诸如“所有这些调用都已进行”和“这些调用以特定顺序发生”之类的事情。

您在组件之间执行的协议(protocol)越多,测试就越脆弱 - 有时这是完全合适的(例如“您必须在执行任何其他操作之前进行身份验证” ) 但很容易以每次更改实现时都必须更改的测试结束,即使是以合理的方式也是如此。

关于testing - 模拟......和验证者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/274585/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com