2013-07-11 174 views
1

我试图测试茉莉花是否调用String.toUpperCase方法。但是每当我尝试它只是返回茉莉花测试toUpperCase

toUpperCase()方法不存在

这里是我的茉莉花测试:

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

如何测试,如果那个叫任何想法?看来Stringwindow对象的私有类,所以我可能实际上不能测试它。请帮忙。

回答

5

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

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

然而,原生的功能,不能保证会那样,是用JavaScript实现,所以不要感到惊讶,如果这也不行功能。

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

+0

我正在测试一个函数的行为,它的最终结果就是调用它。所以这是确保一切顺利的最佳方式。无论如何,你对如何测试它是正确的。谢谢。 –