如何用Jest单元测试覆盖TypeORM@Column装饰器? [英] How to cover TypeORM @Column decorator with Jest unit testing?
本文介绍了如何用Jest单元测试覆盖TypeORM@Column装饰器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我希望尽可能多地对我的应用程序进行单元和e2e测试,我的目标是覆盖率达到101%。我的设置现在的问题是,来自typeorm的@Column修饰符使用一个箭头函数来设置一个缺省值,比如数据库更新上的当前时间戳。此箭头函数不包含在JEST测试覆盖范围内。消息为:statement not covered
jest --coverage
运行代码覆盖率。
我的版本:
"jest": "^24.9.0",
"typeorm": "^0.2.20"
Package.json中的Jest配置:
{
"jest": {
"moduleFileExtensions": [
"js",
"json",
"ts"
],
"rootDir": "src",
"testRegex": ".spec.ts$",
"transform": {
"^.+\.(t|j)s$": "ts-jest"
},
"coverageDirectory": "../build/coverage",
"testEnvironment": "node",
"coverageThreshold": {
"global": {
"branches": 80,
"functions": 80,
"lines": 80,
"statements": -10
}
}
},
}
我的实体如下所示:
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
@Entity()
export class Role {
@PrimaryGeneratedColumn()
id: number;
@Column()
tenantId: number;
@Column({ type: 'timestamp', update: false, default: () => 'CURRENT_TIMESTAMP()' })
createdAt: Date;
@Column({ type: 'timestamp', default: () => 'CURRENT_TIMESTAMP()', onUpdate: 'CURRENT_TIMESTAMP()' })
updatedAt: Date;
}
此实体的承保范围:
(要发布图片,我需要10个声誉-.-):https://i.ibb.co/FYQgstP/Screenshot-2019-11-07-11-46-45.png
推荐答案
我在GraphQL修饰器上遇到了类似的问题。因为所有这些都是函数,所以您可以做的是创建一个包含您将使用的所有函数的文件,命名并导出它们,这样您也可以实际测试它们并使用Jest获得覆盖率。(从字面上看,测试应该类似于expect(namedFunction).toBe('CURRENT_TIMESTAMP()')
或非常类似。查看示例you can see my function here和my tests here。
编辑2020年3月11日
代码示例不再有了。也就是说,您可以做类似
的事情export const returnString = () => String;
@Query(returnString)
用于GraphQL。对此的测试将如下所示
expect(returnString()).toBe(String);
这篇关于如何用Jest单元测试覆盖TypeORM@Column装饰器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文