使用Jasmine测试toUpperCase

时间:2013-07-11 00:09:35

标签: javascript coffeescript jasmine

我正在尝试测试是否使用Jasmine调用String.toUpperCase方法。但是每当我尝试它时,只需返回

  

toUpperCase()方法不存在

这是我的Jasmine测试:

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

有关如何测试是否被调用的任何想法?似乎Stringwindow对象的私有类,因此我实际上可能无法对此进行测试。请帮忙。

1 个答案:

答案 0 :(得分:7)

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

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

但是,本机函数不能保证像JavaScript中实现的函数一样,所以如果不起作用也不要感到惊讶。

检查toUpperCase方法在任何地方都已被调用(这是带有间谍的String.prototype.toUpperCase包装将会这样做)似乎有点无意义,因为字符串被遍布整个地方;对特定字符串进行间谍活动会更有意义,但即便如此,这个特殊的测试似乎仍然毫无意义。