【发布时间】:2021-09-26 18:19:28
【问题描述】:
在 Nest 中构建 API 时,我经常遇到一个问题,即特定 API 可能需要使用多个 Nest 模块才能完成工作。我想知道是否有更好的方法来构建我的模块,以便对它们进行单元测试。
例如,假设我们有一个OrderService。 OrderService 使用了一些不同的依赖项来完成它的工作:
- 它使用
ProductsService来查找产品详细信息和价格。 - 它使用
UsersService来查找客户信息,例如Stripe 客户ID。 - 它使用 Typeorm 处理将
Order写入数据库 - 最后,假设它使用
CouponsService来查找和验证Order的优惠券详细信息。
为了这个例子,让我们假设这 4 个依赖项中的每一个都是它自己的 Nest 模块。
在对OrdersService 进行单元测试时,我需要删除 4 个不同的依赖项。这似乎比应该做的工作要多得多,所以我意识到一定有更好的方法。
我尝试做的一件事是创建单独的帮助文件来设置每个服务模拟。这减少了使用特定依赖项的每个服务的样板数量,但您最终仍会遇到 1 个服务可能具有 4 个不同依赖项的情况。
理想情况下,我想实现一些模式或结构,这样当我测试文件时,依赖关系要么非常简单,要么自动模拟,或者特定文件一次只有 1 个依赖关系,而不会过度简化系统.
我的问题归结为:
您如何在服务中处理许多这样的依赖项,而不会导致测试函数需要您模拟 4 种以上的方法。我很想听听 Nest 特定的方法来做到这一点,但我也很欣赏任何通用的软件工程示例或模式来研究。
【问题讨论】:
标签: unit-testing nestjs