Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 干摩卡异步测试_Javascript_Node.js_Mocha.js - Fatal编程技术网

Javascript 干摩卡异步测试

Javascript 干摩卡异步测试,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,使用摩卡咖啡,我通常需要在验收测试中执行以下操作: beforeEach(function(done) { Factory.createMany('artifact', 2, function(err, result) { if(err) { return done(err); } expected = result; done(); }); }); 最好将其干燥一点,以消除所有重复的错误处理。我想到的一个想法是: function fai

使用摩卡咖啡,我通常需要在验收测试中执行以下操作:

beforeEach(function(done) {
  Factory.createMany('artifact', 2, function(err, result) {
    if(err) {
      return done(err);
    }
    expected = result;

    done();
  });
});
最好将其干燥一点,以消除所有重复的错误处理。我想到的一个想法是:

function failOrRun(done, fn) {
  return function(err, result) {
    if (err) {
      return done(err);
    }

    return fn(result);
  };
}

Factory.createMany('artifact', 2, failOrRun(done, function(result) {
  expected = result;
  done();
}));

但这也不是真正可读的。如果您能为我的重构提供一些提示,那就太好了。

您有两个不同的问题:

  • 单元测试中的代码重复
  • 单元测试中的代码可读性
  • 关于第一点,DRY是一个有用的原则,但是在编写单元测试时不要过高估计他的重要性。可读性和可维护性是至关重要的,IMO,我愿意用一点冗余换取可读性的切实改善

    第二点部分基于观点,但我想说:研究并学习如何使用承诺。并不是承诺总是安全的(您必须记住总是在
    然后
    中返回承诺,并调用
    失败
    来捕获运行时错误),而是它们更容易阅读

    您可以使用ES6实现或类似的库来利用健壮的Promise实现

    祝你好运