0
getTotalSessions(200);

function getTotalSessions(noToExpect){
    it("Tests some stuff", function(done){
        this.timeout(0);
        setTimeout(function(){
            checkSessions("day", function(total){
                assert.strictEqual(total, noToExpect, "Session number mismatch!\n\nReturned: " + total + "\nExpected: " + noToExpect + "\n");
                done();
            });
        }, 3000);
    });
}

我正在做一些 Mocha 测试,但在上面的代码中出现了一个奇怪的错误;

noToExpectNaN在断言时,无论我通过什么数字(尽管上面只是一个例子。

我假设这noToExpect只是在一个闭包内,因为使用了回调(尽管我对这个概念很陌生)。

有没有办法可以在该闭包中使用传递的参数?我只是缺少一些简单的东西吗?

编辑:noToExpect在里面的第一行添加了一个日志,it它记录了 200,所以这个数字是it正确的。

4

1 回答 1

1

noToExpect由于闭包在 Javascript 中的工作方式,应该可以在 getTotalSessions 内的任何一个嵌套匿名函数中使用。我希望您有其他类型的错误,让您误以为您无权访问它。

一些可能性包括:

  1. 您还有一些其他代码错误正在改变您认为正在发生的执行路径。
  2. 您在某处的变量名中有拼写错误。
  3. 其他代码正在更改或重新定义或覆盖 noToExpect。

听起来你想通了,但这里有一个 jsFiddle,它显示了如果其他东西没有搞砸的话,你所拥有的一般概念:http: //jsfiddle.net/jfriend00/nY6WC/

于 2013-10-03T00:29:59.713 回答