在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\""
},