我正在尝试测试是否用Jasmine调用了String.toUpperCase方法。但是,只要我尝试,它就会返回



这是我的 Jasmine 测试:

spyOn(String,"toUpperCase")
$(@makeup.el).trigger(@e)
expect(String.toUpperCase).toHaveBeenCalled()

关于如何测试是否有任何想法?看来Stringwindow对象的私有(private)类,因此我实际上可能无法对其进行测试。请帮忙。

最佳答案

没有String.toUpperCase函数。但是,有一个String.prototype.toUpperCase函数,它将使用"pancakes".toUpperCase()。您应该有以下更好的运气:

spyOn(String.prototype, 'toUpperCase')
#...
expect(String.prototype.toUpperCase).toHaveBeenCalled()

但是,不能保证本机函数的行为类似于JavaScript中实现的函数,因此如果这也不起作用也不要感到惊讶。

由于在各处都使用了字符串,因此检查toUpperCase方法是否在任何地方都被调用(这是用 spy 将String.prototype.toUpperCase包裹起来的方法)似乎没有意义。监视一个特定的字符串会更有意义,但是即使那样,这个特定的测试仍然显得毫无意义。

关于javascript - 使用Jasmine测试toUpCase,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17582997/

10-13 04:53