Node.js 使用chai spy的单元测试节点脚本。。。监视的函数未定义
为我的第一个gulp插件编写我的第一个node.js测试…使用mocha和chai。I getNode.js 使用chai spy的单元测试节点脚本。。。监视的函数未定义,node.js,unit-testing,gulp,mocha.js,chai,Node.js,Unit Testing,Gulp,Mocha.js,Chai,为我的第一个gulp插件编写我的第一个node.js测试…使用mocha和chai。I getTypeError:ar errorCheckArg=spy(errorCheckArg)无法读取未定义的的属性“断言”。似乎errorCheckArg功能在测试环境中不可用(我做了一个console.log(errorCheckArg),它显示了undefined) 知道我做错了什么吗 describe('gulp-foobar', function() { var fakeFile;
TypeError:ar errorCheckArg=spy(errorCheckArg)无法读取未定义的
的属性“断言”代码>。似乎errorCheckArg
功能在测试环境中不可用(我做了一个console.log(errorCheckArg)
,它显示了undefined
)
知道我做错了什么吗
describe('gulp-foobar', function() {
var fakeFile;
beforeEach(function() {
var fakeFile = new File({
contents: new Buffer('abufferwiththiscontent')
});
});
describe('get files', function() {
it('should do something', function(done) {
var foo = function() { };
foobar(foo);
var errorCheckArg = spy(errorCheckArg);
expect(errorCheckArg).to.have.been.called.with(arguments);
done();
});
});
});
正在测试的Gulp插件/节点脚本:
如果errorCheckArg是foobar内部的一个函数,那么除非您以某种方式将其暴露给外部世界,否则您将无法监视它。如果是这样的话:
function foobar(callback) {
errorCheckArg(arguments);
.
.
.
function errorCheckArg(args){};
}
你把它变成了私人活动
如果它足够重要,可以单独测试它,那么您需要以某种方式公开它,并且需要重构代码
如果不进行重构,您可以根据errorCheckArg对foobar输出的影响来测试它。如果保留只调用函数的习惯用法对我来说很重要,那我就是这么做的。您需要以某种方式公开errorCheckArg以监视它。errorCheckArg位于foorbar内部的何处?是的,它位于
函数foorbar(callback){}
中,我在测试中使用foorbar(foo)调用它代码>
function foobar(callback) {
errorCheckArg(arguments);
.
.
.
function errorCheckArg(args){};
}