Jasmine测试:如何调用在测试函数中调用的函数?

时间:2015-04-20 10:36:59

标签: javascript function testing jasmine

我尝试用Jasmine测试JavaScript函数。它看起来像这样:

show: function(){
    this.work();
    var mod = new Module();
    mod.doSomething();
}

我正在测试work()中是否调用了show(),这没问题。但是mod.doSomething()发生错误。这使得我的测试失败了,尽管它确实通过了。我该怎么做才能阻止mod.doSomething被调用或至少被执行。对于未使用的函数调用,是否有类似callThrough()的内容?

我唯一的想法就是编写一个可以从任何地方设置为true或false的全局变量。然后我扩展mod.doSomething()函数,如果此变量设置为true,则不会被调用。现在我可以简单地将变量设置为true,如果我不希望在测试时执行此函数。但我认为必须有更好的解决方案。有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

这对于“标准”茉莉花实践来说是不可测试的。方法show()应该将模块作为参数....然后它可以通过doSomething()上的间谍来测试......