【问题标题】:koa/supertest - server.close is not a functionkoa/supertest - server.close 不是函数
【发布时间】:2020-06-18 15:00:49
【问题描述】:

我看过以前的帖子,问题是您需要导出实例才能在服务器上调用close()。我已经尝试过了,但是我仍然收到该错误

index.ts

import * as Koa from "koa"
import * as logger from "koa-logger"
import * as json from "koa-json"
import * as bodyParser from "koa-bodyparser"
import * as cors from "koa-cors"
import errorHandler from "./middlewares/errorhandler.middleware"
import router from "./routes"

const PORT = process.env.PORT || 3000;
const ENV = process.env.NODE_ENV || 'development';
const app = new Koa()

app
    .use(logger())
    .use(bodyParser())
    .use(errorHandler)
    .use(router.routes())
    .use(router.allowedMethods())
    .use(json())
    .use(cors())


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

我也尝试过不同的导出方式

const appServer = app.listen(...)
export default appServer

测试文件

const request = require('supertest');
const server = require('../index');
beforeAll(async () => {
 // do something before anything else runs
 console.log('Jest starting!');
});
// close the server after each test
afterAll(() => {
 server.close();
 console.log('server closed!');
});
describe('basic route tests', () => {
 test('get home route GET /', async () => {
 const response = await request(server).get('/');
 expect(response.status).toEqual(200);
 expect(response.text).toContain('Hello World!');
 });
});

另外,如果我将 const server = require("../index.ts") 语句更改为导入,则会收到错误消息:Property 'close' does not exist on type 'typeof import("/Users/path/to/file/")

所以这也可能是问题的一部分。

【问题讨论】:

    标签: node.js jestjs koa2


    【解决方案1】:

    在测试文件中更改导入

    import {server} from "../index"
    

    【讨论】:

      猜你喜欢
      • 2019-05-29
      • 1970-01-01
      • 2022-06-10
      • 2018-03-08
      • 2018-06-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-06
      • 2021-04-19
      相关资源
      最近更新 更多