如何使用 Jest 单元测试覆盖 TypeORM @Column 装饰器?

2024-03-06

我希望尽可能多地对我的应用程序进行单元和端到端测试,我的目标是覆盖率达到 101%。我的设置现在的问题是,typeorm 的 @Column 装饰器使用箭头函数来设置默认值,例如数据库更新的当前时间戳。这个箭头函数没有被玩笑测试覆盖。消息是: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;
}

该实体的覆盖范围:


I ran into a similar issue with GraphQL decorators. As all of these are functions, what you can do is create a file that holds all of the functions you'll be using, name them, and export them, so that you can actually test them as well and get the coverage with Jest. (The tests should literally be something like expect(namedFunction).toBe('CURRENT_TIMESTAMP()') or very similar. For an example you can see my function here https://github.com/jmcdo29/zeldaPlay/blob/master/apps/api/src/app/models/gqlReturns.ts and my tests here https://github.com/jmcdo29/zeldaPlay/blob/master/apps/api/src/app/models/graphql-returns.spec.ts.

编辑 11/03/2020

代码示例不再了。话虽这么说,你可以做类似的事情

export const returnString = () => String;

@Query(returnString)

对于 GraphQL。对此的测试如下所示

expect(returnString()).toBe(String);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jest 单元测试覆盖 TypeORM @Column 装饰器? 的相关文章

  • 使用 @nomiclabs/hardhat-waffle 实现装置

    在官方华夫饼文档中 您可能会找到实现装置的下一种方法 import expect from chai import loadFixture deployContract from ethereum waffle import BasicTo
  • TypeScript问题如何在Chart.js和react-chartjs-2的自定义插件中传递参数

    我创建了一个自定义插件horizontalArbitraryLine import Plugin from chart js export const horizontalArbitraryLine Plugin id horizontal
  • 从联合类型映射多个兼容类型

    我正在开发一个应用程序 我们已经定义了一个类型 并且需要从该单个接口中推导出多个接口 Example 我们的主要类型看起来像这样 该类型是否定义为映射类型或联合类型并不重要 因此最简单的解决方案都是最好的 type A type A inp
  • 与 webpack 捆绑后,无法读取枚举的未定义属性

    我有一个 React 库 我想使用 Webpack 来构建它 该库是使用 Typescript 编写的 似乎一切正常 但由于某种原因枚举却不起作用 当我将库安装到我的 React 应用程序中时 我发现Cannot read properti
  • Observable:如果前面有map(),为什么不会导致subscribe()成功?

    我参考这个post https stackoverflow com questions 34671715 angular2 http get map subscribe and observable pattern basic unders
  • Angular 6 http.delete 请求不起作用

    我似乎无法让我的删除请求发挥作用 我已经完成了所有的获取请求 但现在我被困在删除上 似乎无法理解它 console log 的 URL 始终正确 并且删除请求通过 Postman 工作正常 有什么想法吗 HTML
  • 是否有用于运行测试组的 JUnit TestRunner?

    我目前正在使用 JUnit 4 并且需要将我的测试分为可以以任意组合有选择地运行的组 我知道 TestNG 具有注释测试以将它们分配到组的功能 但我现在无法迁移到 TestNG 看来这可以通过一些自定义注释和自定义 JUnit TestRu
  • “未知”与“任何”

    TypeScript 3 0 引入unknown根据他们的 wiki 输入 未知现在是保留类型名称 因为它现在是内置类型 根据您对未知的预期用途 您可能需要删除 完全声明 有利于新引入的未知类型 或者 将其重命名为其他名称 有什么区别unk
  • 在 PyCharm 中禁用 Pytest

    如果我有一个以 test 开头的文件 PyCharm 会尝试使用 PyTest 运行该文件 我想正常运行它 作为常规 Python 脚本 我怎样才能做到这一点 Edit请参阅下面 Milo 的回答 如果由于某种原因这对您不起作用 正如 A
  • 如何模拟 typeorm 连接

    在集成测试中 我使用以下代码片段来创建连接 import Connection createConnection from typeorm ts ignore import options from ormconfig js export
  • 如何避免 Angular 材料中出现额外的 mat-form-field-underline

    我在查找为什么在使用组件时会出现额外的 mat form field underline 时遇到问题 我的页面使用此标记
  • Seam 和 Mock 有什么区别?

    自从我使用 java 遗留代码以来已经有几个月了 这是我正在处理的一些事情 0 测试覆盖率 巨大的函数有时我什至看到有的代码超过300行 许多私有方法 有时还有静态方法 高度紧密耦合的代码 一开始我很困惑 我发现在遗留系统中使用TDD很难
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • “ReactNode”不是有效的 JSX 元素

    我有以下代码 代码沙箱 https codesandbox io s react typescript forked 50beyp file src App tsx import ComponentType ReactNode from r
  • 已删除的测试仍保留在 Xcode 测试导航器中

    我最近从我的项目中删除了一些旧的测试类并删除了这些文件 正如预期的那样 文件被移至垃圾箱并在 git 中显示为已删除 不幸的是 它们定义的测试类和测试用例继续出现在测试导航器中 我尝试过常见的方法 例如清理和重建 以及退出并重新打开 Xco
  • Visual Studio 代码断点在使用 TypeScript 的 Node.js 上不起作用

    我尝试了很多解决方案 但没有人适合我 代码执行 但我无法放置断点并调试它 请你帮助我好吗 我尝试过以下 VSCode 配置脚本 type node request launch name Typescript Node JS program
  • 在 Angular 6 服务中获取当前路由参数的最佳方法是什么?

    我试图找出在 Angular 6 中获取当前路由参数的最佳方法是什么 目前我必须通过ActivatedRoute到服务的方法作为参数 然后在服务中使用它 export class MainComponent constructor priv
  • 未强制执行 Typescript 抽象类静态方法

    我在 TypeScript 中有这个简单的代码 abstract class Config readonly NAME string readonly TITLE string static CoreInterface gt any cla
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • 如何运行传递给模拟方法的 lambda 函数?

    我想知道是否可以运行作为参数传递给模拟函数的 lambda 函数 并在调用模拟方法时运行它 我正在使用 Mockk 我想象代码是这样的 class DataManager fun submit lambda Int gt Unit val

随机推荐