我有一些测试mongoose模型的测试用例。但是在用Jest(typescript代码)运行它们时,我得到了很多运行错误:
错误TS2531:对象可能为“null”。
示例代码(错误在第3行):
const user = await User.findById("id_test");
expect(user).toBeDefined();
expect(user.password).not.toBe("older_password");
是的,我的用户可以是空的,但它可以是一个不精确的测试用例,但肯定不是一个阻塞错误...
我怎样才能让我的测试通过?(要么精确我的测试,要么沉默这种类型的错误,但我不想沉默整个项目的这个错误,我只想沉默测试文件,而不是src文件)。
3条答案
按热度按时间pw9qyyiw1#
选项1。您可以使用非空Assert运算符来Assert
user
不是null
。例如:
user.ts
:user.test.ts
:选项2.使用选项1,你将在测试用例中使用大量的
!
操作符,如果你觉得这很麻烦,你可以用--strictnullchecks: true
为src
目录创建tsconfig.json
,用--strictnullchecks: false
为test
目录创建tsconfig.json
.更多信息,请参见--strictnullchecks例如:
test
目录中的tsconfig.json
:7dl7o3gd2#
但你不是在测试吗?别搞复杂了。
sh7euo9m3#
我遇到了同样的问题,但由于no-non-null-assertion也处于活动状态,所以无法像在接受的答案中那样使用非空Assert。
仅对测试禁用这些规则也没有吸引力。
相反,我向我的测试套件中添加了以下函数:
并将测试更新为: