Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 网络应用测试与誓言和托比_Node.js_Express_Vows - Fatal编程技术网

Node.js 网络应用测试与誓言和托比

Node.js 网络应用测试与誓言和托比,node.js,express,vows,Node.js,Express,Vows,我是node.js测试的新手,也许你可以帮我: 我想使用vows和tobi为我的express webapp做一些或多或少的简单测试(例如测试登录路径是否有效) 我明白了: ♢ mytest GET / ✗ has the right title » expected { '0': { _ownerDocument: [....lots of stuff, won't paste it all.....] Entity: [Function

我是node.js测试的新手,也许你可以帮我: 我想使用vows和tobi为我的express webapp做一些或多或少的简单测试(例如测试登录路径是否有效)

我明白了:

♢ mytest

GET /
    ✗ has the right title
      » expected { '0': 
    { _ownerDocument: 

    [....lots of stuff, won't paste it all.....] 

    Entity: [Function: Entity],
    EntityReference: [Function: EntityReference] } },
    selector: ' title' } to equal 'MyTitle' // should.js:295

✗ Broken » 1 broken (0.126s)

我不知道这个输出有什么问题,但我猜这与回调有关。我对node.js中的异步编程风格也相当陌生。

vows认为回调的第一个参数是错误的。如果它不是空的或未定义的,它会认为有问题。您必须将回调封装到一个匿名函数中,该函数以null作为第一个参数调用回调

vows.describe('mytest').addBatch({

    'GET /': {
        topic: function() {
            var cb = this.callback;
            browser.get("/", function() {
                var args = Array.prototype.slice.call(arguments);
                cb.apply(null, [null].concat(args));
            });

        },
        'has the right title': function(err, res, $) {

            $('title').should.equal('MyTitle');

        }
    }


}).export(module);

vows期望回调的第一个参数是错误的。如果它不是空的或未定义的,它会认为有问题。您必须将回调封装到一个匿名函数中,该函数以null作为第一个参数调用回调

vows.describe('mytest').addBatch({

    'GET /': {
        topic: function() {
            var cb = this.callback;
            browser.get("/", function() {
                var args = Array.prototype.slice.call(arguments);
                cb.apply(null, [null].concat(args));
            });

        },
        'has the right title': function(err, res, $) {

            $('title').should.equal('MyTitle');

        }
    }


}).export(module);

誓言有点奇怪。如果回调函数中有一个参数,并在第一个参数中调用它,它会认为这是一个错误,并告诉您有错误。如果您有多个错误,它会认为您希望自己处理错误,而不会抛出错误。试着在原始代码的开头添加一个额外的err参数。这并没有被wivers很好地记录下来,我不太确定它是如何工作的。这只是您在使用它时遇到的问题。在开头添加err参数也会引发错误:“TypeError:undefined不是函数”。六羟甲基三聚氰胺六甲醚。。。也许您有关于测试节点模块的建议?我需要来自zombie或tobi(.submit、.fill等)的客户端功能,因此与这两种功能中的一种配合良好的功能将非常好。另外,一份好的文档也不错。。我认为大多数nodejs测试模块都缺乏良好的文档。要么是这样,要么是因为我编程能力差。你可以试着打印出
参数来看看你得到了什么。至于测试模块,我更喜欢。它比vows灵活得多,它是主动维护的,通过异步函数共享变量也容易得多。vows有点奇怪。如果回调函数中有一个参数,并在第一个参数中调用它,它会认为这是一个错误,并告诉您有错误。如果您有多个错误,它会认为您希望自己处理错误,而不会抛出错误。试着在原始代码的开头添加一个额外的err参数。这并没有被wivers很好地记录下来,我不太确定它是如何工作的。这只是您在使用它时遇到的问题。在开头添加err参数也会引发错误:“TypeError:undefined不是函数”。六羟甲基三聚氰胺六甲醚。。。也许您有关于测试节点模块的建议?我需要来自zombie或tobi(.submit、.fill等)的客户端功能,因此与这两种功能中的一种配合良好的功能将非常好。另外,一份好的文档也不错。。我认为大多数nodejs测试模块都缺乏良好的文档。要么是这样,要么是因为我编程能力差。你可以试着打印出
参数来看看你得到了什么。至于测试模块,我更喜欢。它比vows灵活得多,它是主动维护的,因此通过异步函数共享变量要容易得多。