使用 Typescript 在 Jest 中模拟类时引发“缺少分号”错误

问题描述 投票:0回答:2

我正在使用 Typescript 并尝试使用 Jest 测试我的代码,并且我对一个类进行了类型转换,以便我可以模拟它。

不幸的是,当我运行测试套件时,出现以下错误:

 SyntaxError: C:\Projects\sim_editor\server\src\tests\routes.test.ts: Missing semicolon (7:37)

这是我的代码:

describe('Unit test api routes', () => {
    jest.mock('../controllers')
    const mkControllers = Controllers as jest.MockedClass<typeof Controllers>

    beforeEach(() => {
        mkControllers.mockClear()
    })

    .
    .
    .
    The rest of my test suite
 })

错误引用了我声明“mkControllers”的行。

这是更深入的错误日志:

at Parser._raise (node_modules/@babel/parser/src/parser/error.js:97:45)
  at Parser.raiseWithData (node_modules/@babel/parser/src/parser/error.js:92:17)
  at Parser.raise (node_modules/@babel/parser/src/parser/error.js:41:17)
  at Parser.semicolon (node_modules/@babel/parser/src/parser/util.js:131:10)
  at Parser.parseVarStatement (node_modules/@babel/parser/src/parser/statement.js:707:10)
  at Parser.parseStatementContent (node_modules/@babel/parser/src/parser/statement.js:223:21)
  at Parser.parseStatement (node_modules/@babel/parser/src/parser/statement.js:163:17)
  at Parser.parseBlockOrModuleBlockBody (node_modules/@babel/parser/src/parser/statement.js:880:25)
  at Parser.parseBlockBody (node_modules/@babel/parser/src/parser/statement.js:856:10)
  at Parser.parseBlock (node_modules/@babel/parser/src/parser/statement.js:826:10)

谢谢。

javascript typescript testing jestjs syntax-error
2个回答
14
投票

显然我没有将 Babel 配置为与 Typescript 一起使用,因为 Jest 必须使用它。 确保按照“使用 Babel”和“使用 Typescript”下的说明进行操作此处


0
投票
Jest 通过 Babel 支持 TypeScript。请按照以下步骤进行配置。


第 1 步:通过将此命令粘贴到控制台中来添加依赖项。

npm install --save-dev babel-jest @babel/core @babel/preset-env @babel/preset-typescript
第 2 步:在项目的根目录中创建一个名为 

babel.config.js

 的新文件。

第 3 步:将此文本粘贴到

babel.config.js

 文件中。

module.exports = { presets: [ ['@babel/preset-env', {targets: {node: 'current'}}], '@babel/preset-typescript', ], };
    
© www.soinside.com 2019 - 2024. All rights reserved.