簡體   English   中英

干式摩卡異步測試

[英]DRY mocha async tests

使用摩卡咖啡,我經常需要在驗收測試中執行以下操作:

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

但這也不是真正可讀的。 如果您能給我一些重構的提示,那將很好。

您有兩個單獨的問題:

  1. 單元測試中的代碼重復。
  2. 單元測試中的代碼可讀性。

關於第一點,DRY是有用的原則,但是在編寫單元測試時不要高估他的重要性。 IMO的可讀性和可維護性至關重要,而我將只需要一點冗余就可以切實提高可讀性。

第二點是部分基於意見的,但我會說:學習並學習如何使用Promises。 並不是Promises總是安全的(您必須記住始終在then內返回Promise並調用fail以捕獲運行時錯誤),但是它們更容易閱讀。

您可以使用ES6實現或Q之類的庫來利用可靠的Promise實現。

祝好運。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM