带有 chai-spy 的单元测试节点脚本......被监视的函数未定义
Unit Testing Node Script with chai-spy ... function spied on is undefined
正在为我的第一个 gulp-插件编写我的第一个 node.js 测试....使用 mocha 和 chai。 ar errorCheckArg = spy(errorCheckArg);
我得到 TypeError: Cannot read property 'Assertion' of undefined
。似乎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();
});
});
});
正在测试Gulpplugin/node脚本:
function foorbar(callback) {
var destinationFile;
errorCheckArg(arguments);
return through2.obj(function(file, enc, next) {
...
如果 errorCheckArg 是 foobar 内部的一个函数,除非您以某种方式将它暴露给外界,否则您将无法监视它。如果看起来像这样:
function foobar(callback) {
errorCheckArg(arguments);
.
.
.
function errorCheckArg(args){};
}
您已将其设为私有函数。
如果它重要到足以单独测试它,那么您将需要以某种方式公开它,并且您需要重构您的代码。
如果不进行重构,您的选择是根据 errorCheckArg 对 foobar 输出的影响来测试它。如果保持仅调用函数的惯用语对我来说很重要,我就会这样做。
正在为我的第一个 gulp-插件编写我的第一个 node.js 测试....使用 mocha 和 chai。 ar errorCheckArg = spy(errorCheckArg);
我得到 TypeError: Cannot read property 'Assertion' of undefined
。似乎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();
});
});
});
正在测试Gulpplugin/node脚本:
function foorbar(callback) {
var destinationFile;
errorCheckArg(arguments);
return through2.obj(function(file, enc, next) {
...
如果 errorCheckArg 是 foobar 内部的一个函数,除非您以某种方式将它暴露给外界,否则您将无法监视它。如果看起来像这样:
function foobar(callback) {
errorCheckArg(arguments);
.
.
.
function errorCheckArg(args){};
}
您已将其设为私有函数。
如果它重要到足以单独测试它,那么您将需要以某种方式公开它,并且您需要重构您的代码。
如果不进行重构,您的选择是根据 errorCheckArg 对 foobar 输出的影响来测试它。如果保持仅调用函数的惯用语对我来说很重要,我就会这样做。