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!nnReturned: " + total + "nExpected: " + noToExpect + "n");
done();
});
}, 3000);
});
}
我正在做一些摩卡测试,上面的代码中出现了一个奇怪的错误;
noToExpect
在断言时NaN
,无论我传递什么数字(尽管上面只是一个示例。
我假设noToExpect
只是在闭包内,因为使用了回调(尽管我对这个概念很陌生)。
有没有办法在该闭包中使用传递的参数?我只是错过了一些简单的东西吗?
编辑:我在it
内的第一行添加了noToExpect
日志,它记录了200,因此该数字正确进入it
。
noToExpect
应该在getTotalSessions的任何一个嵌套匿名函数中可用,因为闭包在Javascript中的工作方式。 我希望您有其他类型的错误,使您感到困惑,让您认为您无法访问它。
一些可能性包括:
- 您有一些其他代码错误正在更改您认为正在发生的事情的执行路径。
- 某处的变量名称拼写错误。
- 其他代码正在更改或重新定义或覆盖noToExpect。
听起来你已经想通了,但这里有一个jsFiddle,它显示了如果你有的一般概念,如果别的东西没有搞砸它:http://jsfiddle.net/jfriend00/nY6WC/