【发布时间】:2022-01-05 11:50:42
【问题描述】:
我在UserService 类下有一些方法,这是我的ORM Prisma 的高级抽象。我这样做的原因是如果我决定使用另一个 ORM,我的应用程序的其余部分就不需要更改。比如这个方法创建一个用户(简化了)
export class UserService {
async create(data: UserCreateInput) {
return await this.prisma!.user.create({
data: { ...data },
select: selectUserFields(),
});
}
}
我的create 方法只是运行 Prisma 的 create 方法并返回输出。我在我的 create 方法中做了更多的事情,但最后,它返回了 Prisma 的 create 方法的结果。在测试中,我必须模拟 Prisma 的 create 方法的返回值,然后检查它是否是我指定的,这有点傻。
it("should create a new user ", () => {
mockPrisma.user.create.mockResolvedValue(defaultUser);
expect(userService.create({ name: "jack" })).resolves.toEqual(defaultUser);
});
即使是这个简单的测试也为我缓存了一些错误,比如忘记返回一个值,但我对它给我带来的好处并不满意。我不想花时间进行愚蠢的测试。
你觉得它也很傻还是我应该保留它?
【问题讨论】:
-
我认为一些测试用例本质上是微不足道的,但是,彻底的测试很重要。所以,我建议你也应该添加更多的案例,比如传递错误的参数,来测试失败的案例。
-
你必须知道(预期的)结果才能写出期望,所以标题没有多大意义。有时您的期望是错误的,或者后来的更改会破坏某些东西,在这些情况下,发现这一点很有用。
标签: node.js unit-testing jestjs