mutoe / blog

mutoe's blog 留言请使用issue功能
http://blog.mutoe.com
4 stars 1 forks source link

手把手带你实践 TDD Nestjs Realworld 项目 - 2. 数据库连接 | 木头的博客 #21

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

手把手带你实践 TDD Nestjs Realworld 项目 - 2. 数据库连接 | 木头的博客

上一个文章我们介绍了如何搭建一个开发环境和 Pipeline, 这篇文章开始我们将正式的用 TDD 的模式实现一个后端项目. 1. 安装依赖我们选用了 Postgres 作为我们的数据库, 操作数据库的 ORM 我们选用 TypeORM, 这是一个 TypeScript 友好的 ORM, 并且 nest 也提供了非常便利的集成方法. 1yarn add @nestjs/typeorm type

https://blog.mutoe.com/2020/TDD-nestjs-realworld-example-app-2/

samwangdd commented 2 years ago

你好,代码中 mockResolvedValue 赋值为 {user: {} }, 因此下面的 expect 总是能够通过,这样用例是可靠的吗?意义是什么?

+       jest.spyOn(userService, 'createUser').mockResolvedValue({ user: {} })
+
+       // When
+       const response = await appController.register(requestBody)
+
+       // Then
+       ...
+       expect(response).toHaveProperty('user', expect.any(Object))
samwangdd commented 2 years ago

我明白了,jest.spyon用于监听对象方法的调用,expect(response) 是为了证明 controller 成功调用了 server 方法;至于具体返回的值是什么,属于 server 的领域,需要在 server 的单测中去检测。

mutoe commented 2 years ago

我明白了,jest.spyon用于监听对象方法的调用,expect(response) 是为了证明 controller 成功调用了 server 方法;至于具体返回的值是什么,属于 server 的领域,需要在 server 的单测中去检测。

对的,单元测试只关注文件本身的逻辑。

严格来说,如果这个controller有对于service返回值的处理逻辑(比如重新封装了appController.register 的返回值),那么是需要测这部份的处理逻辑的。相应的,测试覆盖率中也会有体现