我正在尝试测试是否使用Jasmine调用String.toUpperCase
方法。但是每当我尝试它时,只需返回
toUpperCase()方法不存在
这是我的Jasmine测试:
spyOn(String,"toUpperCase")
$(@makeup.el).trigger(@e)
expect(String.toUpperCase).toHaveBeenCalled()
有关如何测试是否被调用的任何想法?似乎String
是window
对象的私有类,因此我实际上可能无法对此进行测试。请帮忙。
答案 0 :(得分:7)
没有String.toUpperCase
功能。但是,有一个String.prototype.toUpperCase
函数是"pancakes".toUpperCase()
将使用的函数。你应该有更好的运气:
spyOn(String.prototype, 'toUpperCase')
#...
expect(String.prototype.toUpperCase).toHaveBeenCalled()
但是,本机函数不能保证像JavaScript中实现的函数一样,所以如果不起作用也不要感到惊讶。
检查toUpperCase
方法在任何地方都已被调用(这是带有间谍的String.prototype.toUpperCase
包装将会这样做)似乎有点无意义,因为字符串被遍布整个地方;对特定字符串进行间谍活动会更有意义,但即便如此,这个特殊的测试似乎仍然毫无意义。