【发布时间】:2019-09-28 19:18:05
【问题描述】:
我在 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
- https://mochajs.org/#hooks
并且在这个网站上声明我使用的方法是正确的,但它不起作用:
这是我的代码。
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: 'admin@sfgtest.com', 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();
});
});
});
有人知道我做错了什么吗?
【问题讨论】:
-
好吧没有答案,这意味着我猜我使用了错误的工具?让我们忘记 chai-http 实现,因为这永远不会起作用。
标签: node.js unit-testing express mocha.js chai