Express Mocha websocket测试不能可靠地失败/通过
我正试图用Mocha为websocket演示编写一些简单的测试。我得到的结果非常不一致。我有:Express Mocha websocket测试不能可靠地失败/通过,express,websocket,bdd,mocha.js,chai,Express,Websocket,Bdd,Mocha.js,Chai,我正试图用Mocha为websocket演示编写一些简单的测试。我得到的结果非常不一致。我有: var socketURL = `http://0.0.0.0:8888`; var options ={ transports: ['websocket'], 'force new connection': true }; describe("Login functions: ", function(){ describe("tracks numbers correctly", fun
var socketURL = `http://0.0.0.0:8888`;
var options ={
transports: ['websocket'], 'force new connection': true
};
describe("Login functions: ", function(){
describe("tracks numbers correctly", function(){
it('Adds users correctly:', function(){
var bar = io.connect(socketURL, options);
bar.on('joined', function(m){
expect(m).to.have.length(10)
bar.disconnect()
})
})
})
describe("adding guests", function(){
it('New users should be guests', function(){
var foo = io.connect(socketURL, options);
foo.on('joined', function(members){
expect(members).to.include('aaa')
foo.disconnect()
})
});
})
})
两项测试都应该失败。如果我在新启动的节点服务器实例上运行它们,它们都会通过。如果我再运行几次,第一次最终会失败
我尝试了几种不同的编码方法,以及一些断言库(首先是should.js,然后是chai的should(),现在是chai的expect) 我认为您需要使用
done
,如下所示:
it('Adds users correctly:', function(done){
var bar = io.connect(socketURL, options);
bar.on('joined', function(m){
expect(m).to.have.length(10)
bar.disconnect()
done()
})
})
当您将done
作为参数时,直到调用done()
,测试才会结束。这在使用异步回调时很重要。你不能保证他们什么时候被调用,所以现在摩卡可能认为测试已经完成,即使回调实际上还没有完成
测试可能仍然会失败,但它应该始终如一地进行测试,除非它有一些不一致的依赖关系
另请参见:谢谢。我以前一直在使用done()回调函数,但在某个时候删除了它。将其添加回使其正确失败。