好吧,从mocha版本4开始,你必须在mocha之后放置标志--exit ,如果你希望你的节点在测试运行后停止。 所以现在取决于我实现集成测试的方式,我有两种行为,两者都不是我想要的。
it('User exists?', function(done){
console.log(index++ +' - Verify if user already exists');
chai.request(app)
.get('/api/users/exists?value='+createdUser.userName)
.set('Cookie', createdCookie)
.then(function(res){
if(trace)console.log(res.body);
expect(res).to.be.status(200);
expect(res.body.isValid).to.be.true;
done();
}).catch(function(error){
logMessage(error,done);
});
})
测试将运行,节点将停止。但如果我有一个"期待"错误,我的测试将在intellij中为绿色。 (注意done()的存在,然后是内部块和catch)
控制台中出现错误:
(node:30824) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): AssertionError: expected false to be true
(node:30824) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
it('User exists?', function(){
console.log(index++ +' - Verify if user already exists');
return chai.request(app)
.get('/api/users/exists?value='+createdUser.userName)
.set('Cookie', createdCookie)
.then(function(res){
if(trace)console.log(res.body);
expect(res).to.be.status(200);
expect(res.body.isValid).to.be.true;
}).catch(function(error){
logMessage(error);
});
})
测试将运行,节点不会停止。如果我有一个"期待"错误,我的测试将在intellij中显示为红色(预期行为)。
这是我从intellij运行test的行命令:
/opt/node-v8.7.0-linux-x64/bin/node /home/bryan/stack/stack_server/node_modules/mocha/bin/_mocha --exit --ui bdd --reporter /home/bryan/.IntelliJIdea2017.2/config/plugins/NodeJS/js/mocha-intellij/lib/mochaIntellijReporter.js /home/bryan/stack/stack_server/test/api/user/user.controller.js --grep "User controller tests "
我想要的是节点通常在测试运行后停止,intellij在出现错误时显示红色,在没有错误时显示绿色。
功能logMessage
function logMessage(error,done){
console.log('Promise rejected');
console.log(error.message);
if(trace) console.log(error);
done();
throw error;
}
注意:如果我使用"返回"
,已从功能中删除答案 0 :(得分:0)
it('User exists?', function(done){
console.log(index++ +' - Verify if user already exists');
chai.request(app)
.get('/api/users/exists?value='+createdUser.userName)
.set('Cookie', createdCookie)
.then(function(result){
if(trace)console.log(result.body);
expect(result).to.be.status(200);
expect(result.body.isValid).to.be.true;
}).then(done,done)
})
解释here
我做了什么: