Wallaby.js 組態 Files & Tests (04)

本文介紹組態中 2 個屬性: files & tests

Files

files 這個屬性就是用來告知 Wallaby.js 要加載哪些文件。 文件可以是任何類型,可以是 JavaScript / CSS / JSON / 圖像和其它類型的文件。

確保測試中使用的所有文件都列在 files 中,Wallaby.js 使用自己的緩存來處理並運行測試,所以它必須在那裡複製使用的文件。例如,如果從源代碼或測試中有動態加載文件也必須包含在 files 中。

以下有幾種不用列在這個屬性內:

  • node_modules 對於 node.js 測試是直接使用本地資料夾,並不需要緩存
  • webpack / browserify 外部模塊的資料夾
  • 如果有使用 middleware function 來跑瀏覽器測試並使用本地資料夾來建立內嵌服務器像是 node_modules
Tests 

tests 屬性用來列出所有實際測試文件,如果是額外的 Test Helper 或框架應該列在 files 內。不管是 files 還是 tests 列的路徑都是相對於 wallaby.js 的位置。例如下方範例 files 是 src文件夾中的所有 .js 文件以及一個 CSS 文件和一個 HTML 文件。tests 包含名稱以 Spec 結尾所有測試文件。

{
  "files": [
    "style/calculator.css",
    "html/calculator.html",
    "src/**/*.js"
  ],

  "tests": [
    "test/**/*Spec.js"
  ]
}

files & tests 是必填屬性並支持 glob patterns,預設的測試框架是 jasmine。

File 物件表達式

不管 files 還是 tests 屬性都是陣列,裡面的元素除了可以用 string 表達路徑外也可以用物件表達加載文件。 

module.exports = function (wallaby) {
  return {
    files: [
      'src/**/*.js',
      // 與下面此物件相同
      { pattern: 'src/**/*.js', instrument: true, load: true, ignore: false }
    ],

    tests: [
      'test/**/*Spec.js'
    ]
  };
};

物件內的屬性有以下幾個:

  • pattern 文件匹配模式,如果文件滿足多個模式則匹配第一順位。
  • Ignore 忽略 (預設值為 false),如果您想要忽略某個文件,可以使用 !
    {
      "files": [
        "src/**/*.js",
        "!src/**/*Spec.js"
      ],
    
      "tests": [
        "src/**/*Spec.js"
      ]
    }
  • instrument (預設值為 true) 如果設置為 false 將不會列入代碼覆蓋率報告並防止文件更改觸發自動測試執行。
    module.exports = function (wallaby) {
      return {
        files: [
          { pattern: 'libs/jquery.js', instrument: false }
        ],
    
        ...
      };
    };
  • load (預設值為 true) 確定文件是否加載到測試沙箱中。如果您的瀏覽器測試或代碼正在動態加載一些文件,並且你不希望立即加載到您的沙箱中,需要在文件列表中使用 load:false,以便 wallaby.js 可以在其嵌入服務器提供服務。
    module.exports = function (wallaby) {
      return {
        files: [
          { pattern: 'src/**/*.js', load: false }
        ],
    
        ...
      };
    };
  • binary (預設值為 false) 告訴 wallaby 文件是否是二進制文件。雖然在大多數情況下都能夠自動判斷,但是當您的文件副檔名不是眾所周知的副檔名 (如圖像或存檔)。
    module.exports = function (wallaby) {
      return {
        files: [
          { pattern: 'src/**/*.myBinaryExt', binary: true }
        ],
    
        ...
      };
    };
複寫預設值

如果您想覆蓋 wallaby 參數 defaults 屬性。例如,如果配置文件列表中的大部分項目都應將 instrument 屬性設置為 false,則可以按照以下方式覆蓋默認屬性值:

module.exports = function (wallaby) {
  wallaby.defaults.files.instrument = false;
  return {
    files: [
      'libs/lib1.js',
      'libs/lib2.js',
      'libs/lib3.js',
      'libs/lib4.js',
      { pattern: 'src/**/*.js', instrument: true }
    ],

    tests: [
      'test/**/*Spec.js'
    ]
  };
};

注意 filestests 是分開的,如果想要針對 tests default 複寫可以使用 wallaby.defaults.tests

Data Source: Wallaby.js Configuration file: Files and tests