使用Jasmine测试toUpperCase

Bla*_*ten 2 javascript coffeescript jasmine

我正在尝试测试是否String.toUpperCase使用Jasmine调用该方法.然而,无论何时我尝试它只是返回

toUpperCase()方法不存在

这是我的Jasmine测试:

spyOn(String,"toUpperCase")
$(@makeup.el).trigger(@e)
expect(String.toUpperCase).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)

有关如何测试是否被调用的任何想法?它似乎Stringwindow对象的私有类,所以我实际上可能无法测试它.请帮忙.

mu *_*ort 7

没有String.toUpperCase功能.但是,有一种String.prototype.toUpperCase功能"pancakes".toUpperCase()可以使用.你应该有更好的运气:

spyOn(String.prototype, 'toUpperCase')
#...
expect(String.prototype.toUpperCase).toHaveBeenCalled()
Run Code Online (Sandbox Code Playgroud)

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

检查toUpperCase方法是否被调用过任何地方(这就是String.prototype.toUpperCase使用间谍进行包装的方法)似乎有点无意义,因为字符串在整个地方被使用; 监视一个特定的字符串会更有意义,但即便如此,这个特殊的测试似乎仍然有点无意义.