Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何避免nodejs测试中的深层嵌套?_Javascript_Node.js_Closures_Mocha.js - Fatal编程技术网

Javascript 如何避免nodejs测试中的深层嵌套?

Javascript 如何避免nodejs测试中的深层嵌套?,javascript,node.js,closures,mocha.js,Javascript,Node.js,Closures,Mocha.js,您介意分享一下您在测试NodeJ方面的最佳实践吗 为了避免深嵌套,您有什么经验?在编写测试时,无法找出如何将此代码重构为闭包 describe('ProcessRawData', function(){ describe('event that has been already handled', function(){ beforeEach(function(done){ store.testMode(true); var filename = __dirn

您介意分享一下您在测试NodeJ方面的最佳实践吗

为了避免深嵌套,您有什么经验?在编写测试时,无法找出如何将此代码重构为闭包

describe('ProcessRawData', function(){
  describe('event that has been already handled', function(){
    beforeEach(function(done){
      store.testMode(true);
      var filename = __dirname + '/data/test.txt';
      fs.readFile(filename, 'utf8', function(err, rawData) {
        prd.process(rawData, function(err, data){
        var rawMsgSha1 = '123464fbcb34c333f4300a88f019f43e7de757d6'; 
        store.sismember('events:handled', rawMsgSha1, function(err, exists){
          if (err) throw err;
          assert.ok(exists);
          done();
      });
    });
  });
})

<>你可以考虑使用一个异步流控制库,这样会使代码看起来像这样(未经测试):

如果(错误)无处不在,则必须编写
,它不会自动传播
describe('ProcessRawData', function(){
  describe('event that has been already handled', function(){
    beforeEach(function(done){
      store.testMode(true);
      var filename = __dirname + '/data/test.txt';

      Step(
        function readFile() {
          fs.readFile(filename, 'utf8', this);
        },
        function processRawData(err, rawData) {
          if (err) throw err;
          prd.process(rawData, this);
        },
        function doMoreProcessing(err, data) {
          if (err) throw err;
          var rawMsgSha1 = '123464fbcb34c333f4300a88f019f43e7de757d6';
          store.sismember('events:handled', rawMsgSha1, this);
        },
        function checkIfExists(err, exists) {
          if (err) throw err;
          assert.ok(exists);
          done();
        }
      );
    });
  });
})