gpt4 book ai didi

unit-testing - 单元测试范围

转载 作者:行者123 更新时间:2023-12-03 13:44:45 24 4
gpt4 key购买 nike

假设我们有一个远程服务 Alpha,有一个方法 GetUser(id, includePurchases)。
该方法具有以下规则:

- 如果 includePurchases 为真,则 user.Purchases 应该有一个购买列表。
- 如果不是,则 user.Purchases 应为空白。

假设我们有一个 Beta 网站,其 UserRepository 有一个 GetUser(id, includePurchases) 方法。
Beta.UserRepository.GetUser() 在内部调用 Alpha.GetUser()。

负责 Alpha 的团队说 Beta 应该有一个测试来检查该特殊规则。
我不同意,因为如果您有一个调用服务的单元测试,那就是集成测试。

他们不希望 Beta 测试调用 Alpha,而是希望模拟 Alpha.GetUser 方法的测试包含诸如“if (includePurchases) user.Purchases = new List()”之类的内容。
有了这个“if”,将编写一个测试来断言 user.Purchases 是否为空,具体取决于 includePurchases 标志。

你能理解这个吗?
他们想要的测试,难道不应该只是 Alpha 单元测试的问题吗?
对我来说,似乎我正在编写一个测试来检查关于 Alpha 工作方式的假设。

最佳答案

从组件化的角度来看,这听起来完全正常且合法,是的,您是对的,实际调用 Alpha 服务的 Beta 单元测试是集成测试。

请记住,如果您正在为 Beta 的功能编写单元测试,那么您只需要对 Beta 和 Beta 负责。模拟 Alpha 服务调用是合适且首选的,因为您的单元测试应该假设这些外部依赖项完全按照宣传的方式工作。

通过模拟 Beta 中的功能,您可以保证可重复且一致的单元测试,以验证 ONLY Beta 的功能。这样,如果环境中的 Beta 过程失败,并且您的单元测试通过,那么 Alpha Web 服务肯定存在问题,然后由其他团队负责解决和修复此错误。

关于unit-testing - 单元测试范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6371921/

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