我试图通过编写一些BASIC测试来了解回调,看看会发生什么。我用mocha来运行它。很明显,我是回调新手,但我不知道为什么这不起作用。
{{1}}
测试运行,它会创建输出文件,但不会写入任何内容,也不会记录任何错误。
我过去常常从上到下编写程序,这种回调的东西让我这样的人感到困惑。我在这里命名我所有的回调,所以我可以尝试遵循逻辑。我真的很想明白为什么这不起作用。
答案 0 :(得分:0)
您需要向Mocha声明您的测试是异步的。您可以通过以下两种方式之一完成此操作:返回承诺或使用done
回调。您拥有的代码适用于后者:
describe('named callbacks', function() {
it('runs something using callbacks', function(done) {
function runTest() {
return fs.readFile('test.txt', onReadFile);
function onReadFile(err, data) {
if (err) {
console.log('error reading file', err);
done(err);
}
fs.writeFile('testoutfile.txt', data, onWriteFile);
}
function onWriteFile(err, data) {
if (err) {
console.log('write error', err);
done(err);
}
console.log('file written!', data);
done();
}
}
runTest();
});
});
变化是:
将done
作为参数添加到传递给it
的函数中。
将return err
替换为done(err)
。这会将错误传递给Mocha。
在done()
功能的末尾添加onWriteFile
。