最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在AfterEach或afterEach方法中,无法在chai

IT培训 admin 4浏览 0评论

在AfterEach或afterEach方法中,无法在chai

我在nodeJS中有一个Express http服务器,并且正在使用chai mocha进行单元测试或集成测试。这些测试运行正常,但是在测试之后,服务器应该停止。但是服务器永不停止。我尝试了很多可能性,这些可能性在下面的代码中已注释掉。我看到所有函数都被调用了,但是agent.close()却被调用了。未执行或被服务器忽略。

我看过这些网站:

  • Use ChaiHttp with beforeEach or before method
  • How to correctly close express server between tests using mocha and chai

并且在此站点上指出我正在使用的方法是正确的方法,但是它不起作用:

  • /

这是我的代码。

import * as chai from 'chai';
import { expect } from 'chai'
import chaiHttp = require('chai-http');

import { app } from '../../server';

//let testServer;

chai.use(chaiHttp);
chai.should();

describe('Relaties', () => {
    let agent = chai.request.agent(app);

    beforeEach(function (done) {
        console.log('outer describe - beforeEach');

        //testServer = require('../../server')

        agent
            .put('/api/ehrm-klantnr/medewerker/login')
            .send({ email: '[email protected]', wachtwoord: '<secret>' })
            .then(function (res) {
                expect(res).to.have.cookie('SESSIONID');
                done();
            });
    });

    afterEach(function (done) {
        console.log('Describe - After');
        agent.close();

        //delete require.cache[require.resolve( '../../server' )]

        done();

        //server.close();
        //agent.close();
        //testServer.close();

    });


    describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    done();
                });
        });
    });

有人知道我在做什么错吗?

回答如下:

我终于找到了答案,这是一个简单的解决方案。可以通过在package.json文件的npm start脚本行中向mocha命令添加一个简单参数来解决此问题:

npm start test的配置必须是这样,并且--exit --r参数很重要:

"scripts": {
    "ng": "ng",
    "test": "mocha --exit -r ts-node/register **/*.spec.ts",  //this is the correct config
    "start-server": "./node_modules/.bin/ts-node ./server.ts",
    "server": "./node_modules/.bin/nodemon -w . --ext \".ts\" --exec \"npm run start-server\""
  },

在AfterEach或afterEach方法中,无法在chai

我在nodeJS中有一个Express http服务器,并且正在使用chai mocha进行单元测试或集成测试。这些测试运行正常,但是在测试之后,服务器应该停止。但是服务器永不停止。我尝试了很多可能性,这些可能性在下面的代码中已注释掉。我看到所有函数都被调用了,但是agent.close()却被调用了。未执行或被服务器忽略。

我看过这些网站:

  • Use ChaiHttp with beforeEach or before method
  • How to correctly close express server between tests using mocha and chai

并且在此站点上指出我正在使用的方法是正确的方法,但是它不起作用:

  • /

这是我的代码。

import * as chai from 'chai';
import { expect } from 'chai'
import chaiHttp = require('chai-http');

import { app } from '../../server';

//let testServer;

chai.use(chaiHttp);
chai.should();

describe('Relaties', () => {
    let agent = chai.request.agent(app);

    beforeEach(function (done) {
        console.log('outer describe - beforeEach');

        //testServer = require('../../server')

        agent
            .put('/api/ehrm-klantnr/medewerker/login')
            .send({ email: '[email protected]', wachtwoord: '<secret>' })
            .then(function (res) {
                expect(res).to.have.cookie('SESSIONID');
                done();
            });
    });

    afterEach(function (done) {
        console.log('Describe - After');
        agent.close();

        //delete require.cache[require.resolve( '../../server' )]

        done();

        //server.close();
        //agent.close();
        //testServer.close();

    });


    describe('Ophalen alle relaties met: GET /api/ehrm-klantnr/relatie', () => {
        it('should get alle relaties', (done) => {

            agent.get('/api/ehrm-klantnr/relatie')
                .set('meta', '1')
                .then(function (res) {
                    expect(res).to.have.status(200);
                    done();
                });
        });
    });

有人知道我在做什么错吗?

回答如下:

我终于找到了答案,这是一个简单的解决方案。可以通过在package.json文件的npm start脚本行中向mocha命令添加一个简单参数来解决此问题:

npm start test的配置必须是这样,并且--exit --r参数很重要:

"scripts": {
    "ng": "ng",
    "test": "mocha --exit -r ts-node/register **/*.spec.ts",  //this is the correct config
    "start-server": "./node_modules/.bin/ts-node ./server.ts",
    "server": "./node_modules/.bin/nodemon -w . --ext \".ts\" --exec \"npm run start-server\""
  },
发布评论

评论列表 (0)

  1. 暂无评论