本文介紹組態中 2 個屬性: files
& tests
。
files
這個屬性就是用來告知 Wallaby.js 要加載哪些文件。 文件可以是任何類型,可以是 JavaScript / CSS / JSON / 圖像和其它類型的文件。
確保測試中使用的所有文件都列在 files
中,Wallaby.js 使用自己的緩存來處理並運行測試,所以它必須在那裡複製使用的文件。例如,如果從源代碼或測試中有動態加載文件也必須包含在 files
中。
以下有幾種不用列在這個屬性內:
node_modules
對於 node.js 測試是直接使用本地資料夾,並不需要緩存- webpack / browserify 外部模塊的資料夾
- 如果有使用 middleware function 來跑瀏覽器測試並使用本地資料夾來建立內嵌服務器像是 node_modules
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。
不管 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'
]
};
};
注意 files
跟 tests
是分開的,如果想要針對 tests
default 複寫可以使用 wallaby.defaults.tests
。
Data Source: Wallaby.js Configuration file: Files and tests