了解node / js中的REALLY基本回调

时间:2016-07-17 22:08:55

标签: javascript node.js mocha

我试图通过编写一些BASIC测试来了解回调,看看会发生什么。我用mocha来运行它。很明显,我是回调新手,但我不知道为什么这不起作用。

{{1}}

测试运行,它会创建输出文件,但不会写入任何内容,也不会记录任何错误。

我过去常常从上到下编写程序,这种回调的东西让我这样的人感到困惑。我在这里命名我所有的回调,所以我可以尝试遵循逻辑。我真的很想明白为什么这不起作用。

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();
 });
});

变化是:

  1. done作为参数添加到传递给it的函数中。

  2. return err替换为done(err)。这会将错误传递给Mocha。

  3. done()功能的末尾添加onWriteFile