2017-06-21 142 views
0

我正在爲這個測試而苦苦掙扎。我試圖檢查window.location.href的變化。所以我嘲笑了window.location.href,但不知道如何讓函數本身使用模擬版本。JS單元測試幫助業力/ Jasmine

最好只看到代碼...

這增加了事件偵聽器觸發我測試功能: EventListener added to the DOM object earlier in the code.

這是我試圖測試功能: Function which is triggered on click (function I am trying to test)

這是我試圖做的測試: Test I am trying to make work

任何幫助將是大量讚賞。 乾杯人。

+0

如果你把你的代碼放到SO的代碼標籤中會更好。只需使用編輯器面板上的{}圖標即可。 – QuestionAndAnswer

+0

請添加您的第一個函數調用的上下文 – QuestionAndAnswer

回答

1

聲明你的功能的Whenerver,你可以將這個模塊放入你的測試腳本並直接調用。據我所知,你的功能decalred作爲私人功能,僅供內部使用。通常功能測試,至少單元測試只使用公共接口來測試所有單元功能。

有兩種可能的解決方案。

  1. 讓你的功能公開。這意味着,您應該能夠通過在測試模塊上直接調用來調用該函數。
  2. 通過其他功能測試此功能。這個原則說,你可以調用任何公共方法,它應該正常工作。它是否實際使用這種方法並不重要。最終結果應該是正確的。在這種情況下,您可以嘗試觸發一個會調用您測試方法的事件。

而這裏的另一件事是你試圖測試帶有副作用的代碼。現在很難測試這樣的事情。您可以嘗試將其分成幾個部分,並測試無副作用的部分,並儘可能簡化副作用部分。或者你可以完全嘲笑這個功能並觀察結果變化。

總結: 點火人工點擊事件,或分裂你兩個部分的方法和測試一個沒有副作用的方法。