設定
Marko 測試函式庫
不依賴任何測試執行器。然而,它依賴於測試環境。此套件適用於測試伺服器端和客戶端 Marko 模板,並針對每種情況提供稍微不同的最佳化實作。這如同在 Marko 中一樣,是透過 瀏覽器墊片 來完成的。
許多工具都會採用瀏覽器墊片,包括所有捆綁器和一些測試執行器。
以下是一些範例設定,用於使用一些常見的測試執行器來測試伺服器和瀏覽器元件。
Jest
為了讓 Jest 理解 Marko 模板,您必須先安裝 @marko/jest 預設值。這允許將您的 Marko 模板匯入到您的測試中。
在 Jest 中有一個瀏覽器選項,它會告訴 Jest 解析所有模組的瀏覽器墊片版本,如上所述。
要測試在客戶端呈現的元件,請務必啟用 browser
選項和預設值,這樣就可以開始使用了!
jest.config.js
module.exports = {
preset: '@marko/jest/preset/browser',
}
為了測試在伺服器端呈現的元件,我們可以改用 @marko/jest/preset/node
作為我們的 Jest 預設值。
jest.config.js
module.exports = {
preset: '@marko/jest/preset/node',
}
Jest 設定還可以有多個專案,我們可以利用它來為伺服器端測試和客戶端測試建立組合設定,如下所示
jest.config.js
module.exports = {
projects: [
{
displayName: 'server',
preset: '@marko/jest/preset/node',
testRegex: '/__tests__/[^.]+\\.server\\.js$',
},
{
displayName: 'browser',
preset: '@marko/jest/preset/browser',
testRegex: '/__tests__/[^.]+\\.browser\\.js$',
},
],
}
Mocha
Mocha 也非常適合測試 Marko 元件。然而,Mocha 不了解瀏覽器墊片,這意味著它開箱即用只能使用伺服器端的 Marko 元件。
若要使用 mocha
執行伺服器端 Marko 測試,您只需執行以下命令
mocha --require marko/node-require
這會啟用Marko require hook,並允許您直接在測試中 require 伺服器端 Marko 模板。
對於使用 Mocha 進行客戶端元件測試,您通常會使用捆綁器來建置您的測試(這將正確解析上述的瀏覽器墊片),然後您可以在某種瀏覽器環境中載入這些測試。