JS单元测试帮助karma / Jasmine

时间:2017-06-21 18:38:04

标签: javascript unit-testing karma-jasmine

我正在努力进行这项测试。我试图检查window.location.href是否发生了变化。所以我已经模拟了window.location.href,但不知道如何让函数本身使用模拟版本。

最好只看代码......

这会添加触发我正在测试的函数的事件侦听器: 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

任何帮助都会受到大力赞赏。 干杯伙伴。

1 个答案:

答案 0 :(得分:1)

当您声明您的功能时,您可以将此模块放入您的测试脚本并直接调用。据我所知,您将decalred作为私有函数,仅供内部使用。通常是功能测试,至少单元测试只使用公共接口来测试所有单元功能。

有两种可能的解决方案。

  1. 让你公开活动。这意味着,您应该能够通过直接调用测试模块来调用此函数。
  2. 通过其他功能测试此功能。这个原则说,你可以调用任何公共方法,它应该正常工作。它是否实际使用此方法无关紧要。最终结果应该是正确的。在这种情况下,您可以尝试触发一个称为测试方法的事件。
  3. 另一件事是你尝试用副作用来测试代码。很难测试这些东西。您可以尝试将其分成几个部分并测试没有副作用的部分,并使副作用部分尽可能简单。或者你可以完全模拟这个功能,并观察结果变化。

    <强>要点: 点火人工点击事件,或者将方法拆分为两部分并测试一个没有副作用的方法。