約 1 分鐘閱讀

Read in English →

使用Mocha進行測試:陣列比較

在為陣列比較寫一個Mocha測試套件時,我遇到了一個問題。這是測試套件:

問題

在為陣列比較寫一個Mocha測試套件時,我遇到了一個問題。這是測試套件:

describe("Array comparison", function () {
  "use strict";
  it("should return true if two arrays have the same values", function () {
    var myArray = ["a", "b", "c"];
    expect(myArray).to.equal(["a", "b", "c"]);
  });
});

與我的期望相反,這個測試失敗了,產生以下的錯誤:

AssertionError: expected ['a', 'b', 'c'] to equal ['a', 'b', 'c']

我的解釋

為什麼陣列不像其他值那樣進行比較呢?這是因為陣列的typeof是物件。在Mocha中,to.equal並不表示操作數在語義上是相等的;相反,它檢查他們是否參考了相同的物件。換句話說,這個測試失敗是因為myArray並不是與['a', 'b', 'c']完全相同的物件。

可能的解決方案

  1. 使用.eql進行”寬鬆相等”以深度比較值。
  2. 使用.deep.equal,這檢查操作數是否在語義上相等,但不一定是相同的物件。
  3. 在陣列中檢查.members。
  4. 將陣列轉換為字符串然後進行比較。

參考


我希望這個修改的版本更好地傳達了您的見解和解決方案。

繼續探索這個主題

  • 新興市場的企業管治

    對全球投資者與企業擁有人而言,企業管治早已不再只是合規或附屬議題,而是資本配置、風險管理與長期價值創造的核心。中國、巴西與南韓提供了三種截然不同、卻同樣具啟發性的企業管治發展路徑。這些路徑深受歷史、所有權結構與監管選擇所塑造,放在一起觀察,有助我們理解企業管治如何演進、其內在張力何在,以及投資者與控股家族可汲取的實務經驗。

  • 溝通如何塑造全球資產管理中的信任與治理

    企業治理很少是在戲劇化的董事會瞬間中被決定的。它往往是在更安靜、更持續的層面上被塑造——體現在董事收到的資訊品質、決策被呈現與討論的紀律,以及組織與其股東、監管機構、客戶和員工溝通的一致性之中。董事會有效性的「六個 C」——能力、投入、貢獻、質疑、協作與文化——並非抽象的理想,而是最清楚地反映在溝通之中,因為溝通揭示了董事會選擇透明化的內容、選擇加以管…

  • 什麼才是真正界定一位高效能董事的關鍵?

    企業治理的成敗,最終取決於圍繞董事會桌旁的那一群人。制度、守則與架構固然重要,但它們的效能,終究取決於董事所具備的判斷力、誠信與專業能力。在當今環境下,董事會同時被期望監督策略、風險、企業文化與信任,董事的遴選與行為,理應受到比單純檢視履歷與名聲更嚴謹的對待。

返回文章列表