2017-06-21 149 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. 通过其他功能测试此功能。这个原则说,你可以调用任何公共方法,它应该正常工作。它是否实际使用这种方法并不重要。最终结果应该是正确的。在这种情况下,您可以尝试触发一个会调用您测试方法的事件。

而这里的另一件事是你试图测试带有副作用的代码。现在很难测试这样的事情。您可以尝试将其分成几个部分,并测试无副作用的部分,并尽可能简化副作用部分。或者你可以完全嘲笑这个功能并观察结果变化。

总结: 点火人工点击事件,或分裂你两个部分的方法和测试一个没有副作用的方法。