问题标签 [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.
typescript - 用玩笑模拟泛型函数
我尝试了很多方法来用玩笑来模拟一个通用函数,但都没有成功。这是我认为正确的方式:
在编译时它会抛出以下错误:
你能告诉我正确的方法吗?
谢谢
typescript - 我应该把 index.d.ts 文件放在哪里?
我正在编写一个nodeJS 服务,它使用一堆没有@types 的npm 模块。
tsc 错误消息告诉我我需要添加 index.d.ts 文件,但它没有告诉我将它放在哪里。我的 helper.spec.ts 文件也导入了相同的模块,当使用 jest 运行时也无法检测到 index.d.ts
我将该文件与 tsconfig.json 一起放在我的根目录中,但它没有检测到它。我的文件和结构如下所示:
文件夹结构
tsconfig.json
索引.d.ts
包.json
tsc 和 jest 期望 index.d.ts 在哪里?
一些文章建议为每个模块创建一个 index.d.ts,例如./types/module-one/index.d.ts
, ./types/module-two/index.d.ts
,./types/module-three/index.d.ts
然后编辑 tsconfig.jsoncompilerOptions.typeRoots
以包含./types
文件夹。
但我只想有 1 个 index.d.ts 和所有声明。
当我编辑 tsconfig.jsoninclude
以包含index.d.ts
文件时,我发现 tsc 可以编译我的 src 文件夹中的文件。但是,当我运行 jest 时,它仍然抱怨我的模块 index.d.ts 丢失了。
编辑: 如果我删除了我的 tsconfig.json,那么 jest 将正确运行而不会抱怨缺少模块,但是我无法 tsc 构建我的 src 文件。
如果我保留 tsconfig.json,那么 tsc 将构建我的 src 文件,但 jest 会抱怨 module-one 未定义。
编辑2:
我发现如果我设置[jest.config.ts].globals.ts-jest.diagnostics = false
了,那么错误就会消失并且我的所有测试都通过了!但我不认为这是正确的解决办法?
typescript - 如何在 Jest 的测试助手中包含测试 TypeScript 库?
我想在 ./src/index.tsx 中包含一个测试助手文件
但是因为该文件没有 .test.tsx 扩展名,所以它抱怨 jest 没有被定义。
我该如何解决?
typescript - 在 JEST 中模拟 i18n 的 useTranslation 不起作用
我的反应组件使用来自 i18next 的翻译,我正在尝试使用 JEST 为它创建测试。但是,没有任何内容被翻译,我尝试在下面模拟 useTranslation 函数:
我究竟做错了什么?
javascript - 如何在 Meteor.methods 中使用 jest 测试块
我正在为我的流星项目写笑话测试。我正在尝试在 Meteor.methods 中测试代码,但我不确定如何使用 Jest 来测试。
在服务器端(也是 main.js),代码片段如下所示,
在 main.test.js 中,我写了类似的东西
但是会出现错误:
我读过一篇文章提到在文件中伪造流星。(https://blog.meteor.com/real-world-unit-tests-with-meteor-and-jest-3d557e84e84a),但我不确定这样如何解析 Meteor.call 或 Meteor.methods 等符号。
任何想法表示赞赏。
reactjs - 如何使用 Typescript 将 jest.spyOn 与 React 函数组件一起使用
我正在使用 Typescript 和 hooks 开发一个 React 应用程序,并且我正在尝试使用 Enzyme 和 Jest 来测试功能组件。我无法使用 jest.spyOn 来测试我的组件中的方法。jest.spyOn 方法无法正确解析并在悬停时显示以下消息
““validateBeforeSave”类型的参数不能分配给“context”|“setState”|“forceUpdate”|“render”|“componentDidMount”|“shouldComponentUpdate”|“componentWillUnmount”|“componentDidCatch”|“ getSnapshotBeforeUpdate" | ... 6 更多 ... | "UNSAFE_componentWillUpdate"'.ts(2345)"
我试图将实例转换为“任何”-
这当然忽略了编译时的问题,但是测试会抛出一个运行时错误,即组件上不存在函数。
无法窥探 validateBeforeSave 属性,因为它不是函数;给定的未定义
我在这里想念什么?spyOn 如何与函数组件一起工作?
我使用 create-react-app 模板创建了应用程序,它具有测试包的这些依赖项
reactjs - Typescript + Jest:导入在 jest 与开发模式中是不同的
我目前正在尝试为使用 RCTooltip 的组件编写简单的测试:https ://github.com/react-component/tooltip
当我在浏览器中打开应用程序时,它会打印出以下内容:
但是,当我尝试运行此测试时:
它打印出来:
为什么进口不一样??
这是我的package.json
:
和tsconfig.json
:
node.js - 为什么测试中的 spyOn 函数不能与 sendGrid 一起使用?
我正在使用 Typescript 设置一个带有graphql-yoga
和 `prisma 的 graphql 服务器。当用户注册时,一封带有验证链接的电子邮件将被发送到给定的电子邮件地址。一切正常,但我想在重构功能之前为突变编写一个测试,检查 SendGrid 的“发送”函数是否已被调用。
我尝试用 监视函数jest.spyOn
,但我得到的只是一个错误,这是因为在测试环境中没有为 SendGrid 提供 API 密钥。
我以前使用过 spyOn,它确实有效,尽管这是我第一次将 jest 与 Typescript 一起使用。
注册突变
尝试间谍
运行测试给了我:
错误:GraphQL 错误:未经授权
注释掉突变中的 send 函数调用并运行测试给了我:
错误:expect(spy).toHaveBeenCalled()
预期 spy 已被调用,但未调用。
reactjs - Jest 无法导入 ts/tsx 模块
当我尝试将打字稿模块导入我的单元测试时,我收到一条错误消息Unable to resolve path to module 'src/js/TestNum'
。从 js/jsx 文件进行相同的导入没有相同的问题。
过去,当我在导入打字稿模块时遇到问题时,它会抱怨意外的令牌语法错误。
TestNum.ts
TestStr.js
测试.js
在 vscode 中,如果我单击失败的导入并按 F2,它将导航到导入的定义。
包.json
jest.config.js
编辑
src
根据评论,我在玩弄之后发现的一件新事情是,如果我将测试切换为打字稿测试,那么如果从而不是相对路径引用,它将无法找到我的模块../../src
。这也将防止 IDE 跳转到定义。
typescript - 使用 ts-jest 和 webpack 允许 Jest 识别和解析模块别名需要什么?
我有一个.ts
要测试的文件。
前端/游戏/index.ts
我要导入的文件index.ts
是
frontend/game/views/app.vue
. Webpack-dev-server、eslint 和(我假设)ts-loader 都能够使用@
别名解析模块导入,因为在我的构建或开发步骤中没有错误。
但是,当我运行 jest 时,出现以下错误:
它指的是我的file.spec.js
文件的第一行:
前端/测试/游戏/模型/file.spec.js
我遵循了typescript模块解析文档的建议,以及专门关于设置 webpack/typescript/jest 项目的文章。
他们的建议通常围绕在 3 个地方设置别名:
- webpack 配置,在
resolve.alias
. 矿:
webpack.config.js
- Jest 配置,在
moduleNameMapper
. 矿:
package.json(我的笑话配置所在的位置)
- Typescript 配置,利用
baseUrl
与paths
. 矿:
tsconfig.json
据我所知,我完全按照指示进行了操作。在 github 和 stackoverflow 上窥探之后,我没有发现我做错了什么,或者现在是否有一些错误。我已经尝试向导入添加.vue
扩展,尝试各种路径实验组合(即从paths
对象中删除“前端”,放置和替换路径前和路径后的斜杠等),并切换设置,例如esModuleInterop
,无济于事。
如何让 Jest 识别我的模块别名?
编辑:令人着迷的是,//@ts-ignore
在 import 语句之前立即添加会导致此错误“消失”,然后 jest 成功导入文件。
EDIT2: tsignore 步骤让我完全怀疑 jest 导入文件的能力.vue
,所以我在 github 上的这个问题以及文件上的typescript 建议.vue
中探讨了这一点。但是,我已经有一个vue-shims.d.ts
与他们的建议相同的文件。只是为了实验,我把它复制到了整个应用程序,但无论我放在哪里,都没有效果。