问题标签 [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.
javascript - 如何模拟非异步方法以使用 Jest 引发异常?
这是我在 TypeScript 中的代码片段:
的create
方法MyController
不是 async,也不是 of MyService
:两者都只是常规方法。现在,当我尝试运行此测试时,它在抛出异常的模拟方法的行上失败:throw new Error()
并且只有当我使用这样的create
方法调用包装时它才能正常工作:try/catch
我觉得这很奇怪。它不应该在没有try/catch
设计包装的情况下工作吗?
node.js - 开玩笑测试时的 TypeError 但执行时没有
我正在使用 Typescript 和 Nodejs 构建一个 API。所以我决定使用 Jest(也使用 ts-jest)和 Supertest 来创建一个单独的测试环境,该环境也使用不同的数据库,但我遇到了一个我无法修复的错误。错误说 Server 不是构造函数,但是当我运行应用程序时,它工作正常。这是代码和错误
服务器.ts
这是创建服务器实例的模块
索引.ts
这是我正在尝试做的测试文件。我不明白的一件事是,当我删除下面的服务器实例并仅使用在 index.ts 处创建的实例时,错误消失了
users.test.ts
最后这是错误
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
了我的构造函数。我一定遗漏了一些明显的东西。
typescript - ts-jest:TypeScript 类型错误被忽略
我刚开始学习 TypeScript 并尝试了一些带有 jest 单元测试的简单应用程序(使用 ts-jest):
简单的 app.ts 模块:
简单的 app.spec.ts 代码:
问题是:我是否应该收到类型错误?事实上,我在这里没有收到任何错误。
但是,如果我在 app.ts 文件中使用错误的参数类型调用 greet,则整个测试套件都会失败。
我在 TypeScript 单元测试中遗漏了什么吗?
UPD。将 require 转换为 ES6 导入。TypeScript 诊断现在可以工作了,但我仍然不知道我是否可以对错误类型做任何事情并测试这些情况。任何建议表示赞赏。
typescript - 如何在 Jest 的 globalSetup 函数中使用模块导入 (@) 和 TypeScript?
使用 JS 钩子调用 TS setupGlobal 函数(在模块导入时使用,例如@app/blablabla.ts
),我得到一个错误Cannot find module '@config/config'
。我已经描述moduleNameMapper
并且它正在测试中工作,但似乎它setupGlobal
不起作用。我该如何解决?
正如我所写的,moduleNameMapper
Jest 可以理解测试中的那些(在模块中)导入。
jest.config.js
jestGlobalSetup.js
setupTestEnvironment.ts
我期望“at module”导入将在setupGlobal
函数中执行,但它会引发错误。
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 配置文件中的moduleDirectories和modulePaths无济于事。greeter.ts
src/modules
__tests__
有没有办法让Jest 测试下config.json
的模块可见,同时在运行时greeter.ts
保持它从包中的可见性app.js
?
typescript - 基于承诺的模拟方法不起作用
尝试在JEST中为我用 typescript 编写的 node.js 编写测试。我要测试的功能非常复杂(我的意思是里面发生了很多事情)。它返回一个Promise,其中还有 2 个其他函数正在返回一个Promises(其中一个正在进行异步调用)+ 是BehaviorSubject,Observables (使用forEach从数组创建)和forkJoin。
我正在尝试模拟 1 个基于Promise的嵌套函数的响应。它的结果被分配给一个Observable。我试图改变它的响应的原因是因为我想测试我的主函数。
我面临的问题是,当我创建异步函数的模拟时,对主函数的测试看起来像是忽略了我的模拟并转到原始模拟。
这是我的模块的一个示例(尝试简化它):
这是我创建的测试,但不是获取mockRejectedValue值,而是一直调用pullTableData
我做错了什么?有没有办法模拟pullTableData和buildNewTable以便我可以测试getTable函数?
jestjs - 无法更改使用 genMockFromModule 创建的节点模块模拟
我做了一个模块级别的模拟,将一个 module.js 文件放在__mocks__
node_modules 旁边的文件夹中。(项目根级别)
node_modules/
__mocks__/module.js
然后在里面的module.js文件中__mocks__
我做:
它工作正常(模拟完成),但是当我尝试在我的测试(module.someFunc)上更改“模块”的任何模拟函数实现时,它不会取代模拟实现:
使用带有 ts-jest 的打字稿;
笑话配置:
javascript - 未模拟的方法的开玩笑测试调用
我有一个 React 组件MyComponent
,我想在其中测试用户旋转手机时应该触发的行为。
组件内部:
我在 medium 上找到了一篇文章,描述了如何为此编写测试。但是,这对我不起作用。
在文章中这有效,但是我收到一个错误:
使用间谍也不起作用:
它说:
javascript - VS Code TypeScript Jest 模块映射
我在VS 代码中使用带有 Jest 的TypeScript ,并且我已经映射了一些模块路径以便更容易地访问这些模块。
非常简化,我的目录结构如下所示:
我有这些映射tsconfig.json
:
而这些映射在我的jest.config.js
:
一切正常,我可以毫无问题地运行 Jest,但 VS 代码无法识别@app
文件中的映射auth.test.ts
(auth.ts
它工作正常)。
有没有办法解决这个问题?