歡迎使用 Chai
我們很高興您決定試用 Chai.js!如果這是您第一次造訪,請先熟悉基本知識,例如安裝和我們提供的斷言樣式。
基本知識
- 在 node、瀏覽器和其他環境中安裝 Chai。
- 瞭解可用於定義斷言的樣式。
- 匯入 Chai 並使用外掛,以學習如何將 Chai 與 ESM 和外掛一起使用。
建立外掛
在您對 Chai 中包含的內容有紮實的瞭解之後,下一步是學習如何透過外掛擴充 Chai。Chai 比內建功能強大得多,僅受您想要實現的目標限制。外掛 API 也旨在透過提供使用者一種封裝常用斷言以供重複使用的方式,來簡化測試。
在外掛中公開全域變數
建立 Chai 外掛時,可以公開可在多個檔案中使用的全域變數。以下是如何以可持續的方式執行此操作
良好實踐
建議將任何全域變數匯出到模組記錄中,以便可以直接匯入,而不是將其新增為 chai 物件中的屬性
// An example of a good plugin:
export const myGlobal = {...};
export default function myPlugin(chai, utils) {
}
潛在問題
避免僅透過 chai.use()
公開全域變數,而不使其可匯入,因為這可能會在嘗試跨多個檔案使用全域變數時導致問題
// An example of a plugin which may have issues:
const myGlobal = {...};
export default function myPlugin(chai, utils) {
chai.myGlobal = myGlobal;
}
// Another example of a plugin which may have issues:
export default function myPlugin(chai, utils) {
chai.myGlobal = {...};
}
防止多次呼叫 use(..)
在某些情況下,use(..)
函式可能會多次呼叫您的外掛。對於許多外掛來說,這不會有問題,但最好檢查外掛是否已應用。
以下是一個您可以在外掛中實作檢查的虛構範例,但實際實作留給外掛作者。
import * as chai from 'chai';
let overwritten = false;
function somePlugin(base) {
if (!overwritten) {
base.util.overwriteMethod(base.Assertion.prototype, "equal", function (_super) {
return function(...args) {
console.log("Called!"); // log something out
return _super.call(this, ...args);
};
});
overwritten = true;
}
}
chai.use(somePlugin);
chai.use(somePlugin);
chai.expect(123).to.equal(123); // Logs `Called!` only once
透過遵循這些指南,您可以建立易於使用和維護的 Chai 外掛。