簡體   English   中英

jest/ts/tests 找不到名字“x”

[英]jest/ts/ tests Cannot find name 'x'

我已經閱讀了大量有關此問題的先前 SO 問題,但似乎沒有一個能解決我的任何問題。

index.test.ts

import request from 'supertest';
import * as server from '../server';
import 'jest'

//close server after each request
afterEach( //cannot find name 'afterEach'
  async (): Promise<void> => {
    await server.close(); // Property 'close' does not exist on type 'typeof import(<path to file)'
  },
);

describe('get /', (): void => { //Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`
  it('should respond as expected', async (): Promise<void> => {// cannot find 'it'...
    const response = await request(server).get('/');
    expect(response.status).toEqual(200); // cannot find 'expect'
    expect(response.body.data).toEqual('Sending some JSON'); // cannot find 'expect'...
  });
});

我已經安裝了 jest 和 mocha 類型,只是為了確保它沒有注冊另一個。 幾乎所有東西都沒有被識別,.babelrcc

{
  "presets": ["@babel/preset-typescript"]
}

開玩笑的配置文件

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
  transform: {
    '^.+\\.tsx?$': 'ts-jest',
  },
};

配置文件

{
  "compilerOptions": {
    "module": "commonjs",
    "target": "es6",
    "noImplicitAny": true,
    "preserveConstEnums": true,
    "outDir": "./dist",
    "sourceMap": true,
    "esModuleInterop": true
  },
  "include": ["./src/**/*"],
  "exclude": ["test", "**/*/spec.ts", "**/*/test.ts"]
}

服務器

import * as dotenv from 'dotenv';
dotenv.config();
import Koa from 'koa';
import logger from 'koa-logger';
import apiRoutes from './Routes';
import cors from '@koa/cors';
import bodyParser from 'koa-bodyparser';
const app = new Koa();
const PORT = process.env.PORT || 3001;
const ENV = process.env.NODE_ENV || 'Development';

app.use(logger());
app.use(cors());
app.use(bodyParser());
app.use(apiRoutes);

export const server = app.listen(PORT, (): void => {
  console.log(`🌍 Server listening on port ${PORT} - ${ENV} environment`);
});

我不知道還有哪些其他信息是相關的,如果還有我遺漏的東西,我會用這些信息進行更新

您在嘗試將命名變量server導入時直接導出它,就好像它是默認導出一樣。

只需將其更改為import { server } from './server'; index.test.ts ,它將按預期工作。 您還可以更改導出以export default server server.ts export default server ,但我傾向於根據本文避免這種情況

在 MDN 上閱讀有關export更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM