Mocha WebSocket测试无法可靠地通过/失败

用户名

我正在尝试使用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", 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的期望)。

大卫·霍夫曼

我认为您需要使用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()当您使用异步回调时,这一点很重要。您无法保证何时调用它们,因此即使回调尚未实际完成,Mocha现在也有可能认为测试已完成。

测试可能仍然会失败,但是应该一致地进行,除非它具有某些不一致的依赖项。

另请参阅:http : //visionmedia.github.io/mocha/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

断言失败时仍通过Mocha测试

来自分类Dev

Mocha Chai Sequelize:我无法使测试失败

来自分类Dev

引导Mocha测试套件

来自分类Dev

Mocha测试异步功能

来自分类Dev

Mocha测试异步功能

来自分类Dev

测试:mocha + typescript + webpack

来自分类Dev

Mocha无法识别JSX

来自分类Dev

Mocha测试在本地通过,但在Travis CI上失败

来自分类Dev

使用Babel和Webpack的Mocha测试失败

来自分类Dev

使用Mocha测试NightmareJS代码失败

来自分类Dev

Mocha测试失败并出现AssertionError

来自分类Dev

测试失败-多次调用Mocha的done()

来自分类Dev

在Promise解决之前,Mocha测试失败

来自分类Dev

Mocha / Nightmare测试失败,但仍在等待超时

来自分类Dev

从 Mocha 获取所有测试失败

来自分类Dev

Chai + mocha, 测试成功,拒绝失败

来自分类Dev

Mocha断言失败导致超时

来自分类Dev

在 Mocha 中使脚本返回失败

来自分类Dev

使用setTimeout()暂停Mocha测试

来自分类Dev

Gulp:调试Mocha测试的目标

来自分类Dev

使用Mocha测试Promise链

来自分类Dev

使用setTimeout()暂停Mocha测试

来自分类Dev

省略了Mocha回调测试

来自分类Dev

NodeJ和Mocha测试响应

来自分类Dev

WebStorm Mocha:测试总是待定

来自分类Dev

通过异步JavaScript(Mocha)循环进行测试

来自分类Dev

mocha + chai 的单元测试总是通过

来自分类Dev

使用setInterval测试功能时,Mocha和Chai测试失败

来自分类Dev

当使用--recursive标志运行mocha时,为什么嵌套mocha测试套件无法运行