问题标签 [ts-jest]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3272 浏览

javascript - 如何模拟非异步方法以使用 Jest 引发异常?

这是我在 TypeScript 中的代码片段:

create方法MyController 不是 async,也不是 of MyService:两者都只是常规方法。现在,当我尝试运行此测试时,它在抛出异常的模拟方法的行上失败:throw new Error()并且只有当我使用这样的create方法调用包装时它才能正常工作:try/catch

我觉得这很奇怪。它不应该在没有try/catch设计包装的情况下工作吗?

0 投票
0 回答
359 浏览

node.js - 开玩笑测试时的 TypeError 但执行时没有

我正在使用 Typescript 和 Nodejs 构建一个 API。所以我决定使用 Jest(也使用 ts-jest)和 Supertest 来创建一个单独的测试环境,该环境也使用不同的数据库,但我遇到了一个我无法修复的错误。错误说 Server 不是构造函数,但是当我运行应用程序时,它工作正常。这是代码和错误

服务器.ts

这是创建服务器实例的模块

索引.ts

这是我正在尝试做的测试文件。我不明白的一件事是,当我删除下面的服务器实例并仅使用在 index.ts 处创建的实例时,错误消失了

users.test.ts

最后这是错误

0 投票
1 回答
1041 浏览

typescript - 使用 ts-jest,得到 `error TS2554: Expected 0 arguments, but got 1` for constructor

这是一个奇怪的问题。我刚刚回到 TypeScript,我正在尝试做一些 TDD。我已经ts-jest设置并运行了我的测试,但我已经遇到了一个非常简单的问题,我无法弄清楚。

组织.ts:

测试.ts:

VS Code 并没有对我大喊大叫,但是当我尝试运行时ts-jest,我进入error TS2554: Expected 0 arguments, but got 1了我的构造函数。我一定遗漏了一些明显的东西。

0 投票
1 回答
4192 浏览

typescript - ts-jest:TypeScript 类型错误被忽略

我刚开始学习 TypeScript 并尝试了一些带有 jest 单元测试的简单应用程序(使用 ts-jest):

简单的 app.ts 模块:

简单的 app.spec.ts 代码:

问题是:我是否应该收到类型错误?事实上,我在这里没有收到任何错误。

但是,如果我在 app.ts 文件中使用错误的参数类型调用 greet,则整个测试套件都会失败。

我在 TypeScript 单元测试中遗漏了什么吗?

UPD。将 require 转换为 ES6 导入。TypeScript 诊断现在可以工作了,但我仍然不知道我是否可以对错误类型做任何事情并测试这些情况。任何建议表示赞赏。

0 投票
1 回答
1879 浏览

typescript - 如何在 Jest 的 globalSetup 函数中使用模块导入 (@) 和 TypeScript?

使用 JS 钩子调用 TS setupGlobal 函数(在模块导入时使用,例如@app/blablabla.ts),我得到一个错误Cannot find module '@config/config'。我已经描述moduleNameMapper并且它正在测试中工作,但似乎它setupGlobal不起作用。我该如何解决?

正如我所写的,moduleNameMapperJest 可以理解测试中的那些(在模块中)导入。

jest.config.js

jestGlobalSetup.js

setupTestEnvironment.ts

我期望“at module”导入将在setupGlobal函数中执行,但它会引发错误。

0 投票
1 回答
2050 浏览

javascript - 如何导入配置文件,以便在 Jest 测试下通过构建的包和模块找到它?

我有一个用 TypeScript 编写的 Node 项目,它使用 Rollup 作为捆绑器,使用 Jest 作为单元测试框架。它具有以下结构(我省略了我认为与问题无关的内容):

src/index.ts:

src/modules/greeter.ts:

__tests__/greeter.test.ts:

jest.config.js:

包.json:

这个想法是构建创建app.js包,它读取config.json应该在同一目录中的配置。

配置.json:

套装app.js包含:

...并且运行app.js正常(config.json提供时)但是当我运行npm test(或简单地npx jest)Jest 错误时:

为了纠正这个错误,我需要在(in )config.json旁边保留(仅用于单元测试) ,但我想将它保留在. 我试图更改Jest 配置文件中的moduleDirectoriesmodulePaths无济于事。greeter.tssrc/modules__tests__

有没有办法让Jest 测试下config.json的模块可见,同时在运行时greeter.ts保持它从包中的可见性app.js

0 投票
1 回答
4854 浏览

typescript - 基于承诺的模拟方法不起作用

尝试在JEST中为我用 typescript 编写的 node.js 编写测试。我要测试的功能非常复杂(我的意思是里面发生了很多事情)。它返回一个Promise,其中还有 2 个其他函数正在返回一个Promises(其中一个正在进行异步调用)+ 是BehaviorSubjectObservables (使用forEach从数组创建)和forkJoin

我正在尝试模拟 1 个基于Promise的嵌套函数的响应。它的结果被分配给一个Observable。我试图改变它的响应的原因是因为我想测试我的主函数。

我面临的问题是,当我创建异步函数的模拟时,对主函数的测试看起来像是忽略了我的模拟并转到原始模拟。

这是我的模块的一个示例(尝试简化它):

这是我创建的测试,但不是获取mockRejectedValue值,而是一直调用pullTableData

我做错了什么?有没有办法模拟pullTableDatabuildNewTable以便我可以测试getTable函数?

0 投票
0 回答
109 浏览

jestjs - 无法更改使用 genMockFromModule 创建的节点模块模拟

我做了一个模块级别的模拟,将一个 module.js 文件放在__mocks__node_modules 旁边的文件夹中。(项目根级别)

  • node_modules/
  • __mocks__/module.js

然后在里面的module.js文件中__mocks__我做:

它工作正常(模拟完成),但是当我尝试在我的测试(module.someFunc)上更改“模块”的任何模拟函数实现时,它不会取代模拟实现:

使用带有 ts-jest 的打字稿;

笑话配置:

0 投票
1 回答
1084 浏览

javascript - 未模拟的方法的开玩笑测试调用

我有一个 React 组件MyComponent,我想在其中测试用户旋转手机时应该触发的行为。

组件内部:

我在 medium 上找到了一篇文章,描述了如何为此编写测试。但是,这对我不起作用。

在文章中这有效,但是我收到一个错误:

使用间谍也不起作用:

它说:

0 投票
1 回答
864 浏览

javascript - VS Code TypeScript Jest 模块映射

我在VS 代码中使用带有 Jest 的TypeScript ,并且我已经映射了一些模块路径以便更容易地访问这些模块。

非常简化,我的目录结构如下所示:

我有这些映射tsconfig.json

而这些映射在我的jest.config.js

一切正常,我可以毫无问题地运行 Jest,但 VS 代码无法识别@app文件中的映射auth.test.tsauth.ts它工作正常)。

有没有办法解决这个问题?