首先让我说明我是一个节点并测试菜鸟。我编写了一个节点模块,用于更新特定目录(以及所有子目录)中所有指定文件类型的所有版权标头。它按预期工作,但我想编写一些测试来验证功能,以防将来发生任何变化,或者在其他地方使用它。
对测试,节点和mocha / chai不熟悉我无法想出一种有意义的测试方法。没有前端,也没有端点。我只传入一个文件扩展名列表,一个包含的子目录列表和一个排除的子目录列表并运行。 (这些列表在模块中用作正则表达式)。文件已就地更新。
有谁能让我知道如何开始这个?我没有被Mocha和Chai束缚,如果有更好的方法,我全都耳朵。如果这超出了stackoverflow的范围,我很抱歉。
答案 0 :(得分:0)
假设你的模块上有一个方法,它返回一个更新文件列表,这又需要一些其他模块遍历文件目录来确定所述文件,你的测试看起来就像这样。您可以使用sinon
进行存根。 :
var assert = require('assert');
var sinon = require('sinon');
var sandbox = sinon.sandbox.create();
var copywriter = require('../copywriter');
var fileWalker = require('../fileWalker');
describe('copywriter', function() {
beforeEach(function() {
sandbox.stub(fileWalker, 'filesToUpdate').yields(null, ['a.txt', 'b.txt']);
});
afterEach(function() {
sandbox.restore();
});
// the done is passed into this test as a callback for asynchronous tests
// you would not need this for synchronous tests
it('updates the copyright headers', function(done) {
copywriter('../some-file-path', function(err, data){
assert.ifError(err);
sinon.assert.calledWith(fileWalker.filesToUpdate, '../some-file-path');
assert.deepEqual(data.updated, ['a.txt', 'b.txt']);
done();
});
});
});