typescript - 用 ES6 和 Typescript 开 Jest

标签 typescript ecmascript-6 jestjs ts-jest

我目前正在尝试使用 Supertest 和 Jest 测试我的 Express api,但是我遇到了一个我似乎找不到答案的问题。

这是我的 API。

router.get('/', async (req: Request, res: Response) => {
  const products: ProductType[] = await MongooseModel.find({});
  res.send(products);
});

这是我的测试套件。

import request from 'supertest';
import products from './products';

describe('GET /', () => {
  it('responds with status 200', async () => {
    const response = await request(products).get('/');
    expect(response.statusCode).toBe(200);
  });
});

这是我的 babel.config.js

export const presets = [
  ['@babel/preset-env', { targets: { node: 'current' } }],
  +'@babel/preset-typescript',
  +'@babel/plugin-transform-modules-commonjs',
];

当我尝试运行测试时,我得到以下响应:

.presets[1] must be a string, object, function

谁能帮我解决这个令人头疼的问题吗?

谢谢!

最佳答案

对智者的话:

+ 是遵循 Jest documentation for Typescript support 的结果。如果您按下他们的按钮来复制他们拥有的 babel.config.js 代码段,它也会获取他们的格式规则,包括 + (他们用它来说明在样板 Babel 配置顶部添加行 "@babel/preset-typescript")。

关于typescript - 用 ES6 和 Typescript 开 Jest ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67708049/

相关文章:

javascript - react , "this",cloneElement 和 es6

reactjs - Enzyme/Jest spy 未调用 onClick

reactjs - 安装时 React Router v4 参数会破坏单元测试内部

javascript - 如何模拟用 jest.mock 模拟的类的实例方法?

typescript - 如何为 'layerX' 和 'layerY' 设置事件类型

typescript - 如何安装与旧版 TypeScript 兼容的@types?

javascript - 在多个组件中重用 firebase 对象实例

JavaScript 生成器、函数* 和数组方法 forEach

javascript - 如何处理 JavaScript 中未定义的函数参数的解构?

angular - 我应该在 Angular 的类中将方法写成箭头函数吗