2

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

toUpperCase() 方法不存在

这是我的茉莉花测试:

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

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

4

1 回答 1

7

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

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

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

检查该toUpperCase方法是否已在任何地方被调用(这是String.prototype.toUpperCase用间谍包装所做的)似乎有点毫无意义,因为到处都使用字符串;监视特定的字符串会更有意义,但即便如此,这个特定的测试似乎仍然有点毫无意义。

于 2013-07-11T00:51:48.960 回答