2017-08-08 78 views
-1

我正在爲使用相同語言編寫的庫在TypeScript 2.4.2中編寫一些單元測試。 某些測試用例需要訪問屬性document.location.href,所以我需要模擬DOM。 測試運行者是Mocha,斷言框架是Chai。如何在Typescript單元測試中模擬DOM?

+0

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現它所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。使用「編輯」鏈接來改善你的*問題* - 不要通過評論添加更多信息。謝謝! – GhostCat

+0

**不工作**不是我們的工作問題描述。考慮把這個[mcve]放在一邊,並清楚地描述「不起作用」的方式並且不符合你的期望。 – GhostCat

+0

@GhostCat我只是編輯我的問題。我的問題不是關於特定的代碼,而是更多的「如何做到這一點」。 – JBENOIT

回答

0

好了,頭痛的許多時間和這個職位上做之後,我終於找到一個方法來做到這一點:

  1. 安裝jsdom-globaljsdom模塊:npm install --save-dev jsdom jsdom-global
  2. 創建一個名爲dom-mock.js文件,例。
  3. 在這個文件中,補充一點:mocha -r tests/mocks/dom-mock.js -r ts-node/register tests/*.ts

require('jsdom-global')(/* any html you need */, { 
 
    /* any jsdom options you need, e.g: */ 
 
    url: "https://example.org/", 
 
    referrer: "https://example.com/" 
 
});

通過註冊DOM嘲笑剛創建
  • 運行測試

    如果您不需要DOM定製,只需運行mocha -r jsdom-global/register -r ts-node/register tests/*.ts