我为这行代码创建了一个茉莉花测试:
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
我尝试用这个来嘲笑它
$window: {open: _.noop, focus: _.noop}
但是当我运行测试时它给了我这个错误
TypeError: 'undefined' is not an object (evaluating 'win.focus')
有人可以帮我解决如何在$ window上模拟焦点功能吗?
答案 0 :(得分:1)
_。noop没有返回值,因此win实际上是未定义的。
你可能想尝试这样的事情:
var $window = {open: function() { return this }, focus: _.noop}
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
答案 1 :(得分:0)
_.noop
什么都不做,什么都不返回。因此,当您执行var win = $window.open('url', '_blank', getBrowserSize());
时,win
未定义。
答案 2 :(得分:0)
您的模拟使用noop
用于open
方法,该方法会将undefined
返回到win
变量中。使用返回另一个模拟的函数,例如为:
$window: {
open: jasmine.createSpy('$window.open'),
focus: _.noop
}
$window.open.and.returnValue({
// this is the second mock
focus: jasmine.createSpy('focus')
});