介绍
NestJS 是一款基于 Node.js 的开源框架,它可以帮助我们更方便地创建可扩展的、模块化的、易于维护的 Web 应用程序。@nestjs/testing 是 NestJS 框架提供的一个 npm 包,它可以帮助我们方便地进行单元测试。
安装
在开始使用 @nestjs/testing 之前,我们需要先安装它。可以使用 npm 命令进行安装:
npm install --save-dev @nestjs/testing
安装完成后,我们就可以在我们的项目中使用 @nestjs/testing 提供的各种测试工具进行单元测试了。
常用工具
在 @nestjs/testing 包中,提供了很多实用的工具类用来进行单元测试:
- TestingModule:使用测试模块初始化 Nest 应用程序。
- Test:定义测试套件的属性。
- TestingModuleBuilder:构建一个测试模块用于初始化 Nest 应用程序。
- MockedService:模拟服务以供测试使用。
- TestingLogger:模拟 Logger 以供测试使用。
- ClientProxyTestingModule:提供测试用的客户端代理。
TestingModule 的使用
TestingModule 可以帮助我们方便地初始化一个 Nest 应用程序。在测试文件中,我们可以按照下面的方式使用这个模块:
-- -------------------- ---- ------- ------ - ----- ------------- - ---- ------------------ ------ - ------------- - ---- ------------------- ------ - ---------- - ---- ---------------- ------------------------- -- -- - --- -------------- -------------- ---------------- -- -- - ----- ---- ------------- - ----- -------------------------- ------------ ---------------- ---------- ------------- ------------- ------------- - -------------------------------------- --- ---------------- -- -- - ---------- ------ ------ --------- -- -- - -------------------------------------------- --------- --- --- ---展开代码
在上面的例子中,我们首先使用 Test.createTestingModule() 方法创建一个测试模块,然后将所需的控制器和服务提供者加入到该测试模块中。compile() 方法会将这个测试模块编译成一个可以使用的应用程序实例。
在 beforeEach() 方法中,我们通过 app.get<appcontroller>(AppController) 获取了应用程序实例中的 AppController,用于后面的单元测试。
MockedService 的使用
MockedService 可以帮助我们方便地模拟服务以供测试使用。下面是一个例子:
-- -------------------- ---- ------- ------ - ----- ------------- - ---- ------------------ ------ - ---------- - ---- ---------------- ---------------------- -- -- - --- -------- ----------- ---------------- -- -- - ----- ------- ------------- - ----- -------------------------- ---------- - ----------- - -------- ---------------- --------- - ---- -- -- ----- ------- -- -- -- ------------- ------- - ----------------------------------- --- ---------- ------ ---- ------- -- -- - ----------------------------------------- -------- --- ---展开代码
在上面的例子中,我们使用了 MockedService 来模拟了一个叫做 ConfigService 的服务,使其返回了一个字符串 test value。
TestingLogger 的使用
TestingLogger 可以帮助我们方便地模拟 Logger 以供测试使用。下面是一个例子:
-- -------------------- ---- ------- ------ - ----- ------------- - ---- ------------------ ------ - ---------- - ---- ---------------- ------ - ------------- - ---- ------------------ ---------------------- -- -- - --- -------- ----------- --- ------- -------------- ---------------- -- -- - ----- ------- ------------- - ----- -------------------------- ---------- ------------ --------------- ------------- ------- - ----------------------------------- ------ - ----------------------------------------- --- ---------- ------ ------ --------- -- -- - -------------------------------------- --------- -------------------------------------------- --- ---展开代码
在上面的例子中,我们使用了 TestingLogger 用来模拟 logger 对象。在单元测试中,我们可以随时使用 logger.getMessages() 方法来获取 logger 的所有输出,并进行断言。
总结
通过学习 @nestjs/testing 的使用教程,我们可以发现它提供了很多实用的工具,并且能够非常方便地帮助我们进行单元测试。熟悉了这些工具的使用,对于我们开发者来说是非常有用的。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/118376