Jasmine - TypeError: 'undefined' is not an object (evaluating 'win.focus')
Jasmine - TypeError: 'undefined' is not an object (evaluating 'win.focus')
我正在为这行代码创建一个 jasmine 测试:
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
我试图以此来嘲笑它
$window: {open: _.noop, focus: _.noop}
但是当我 运行 测试时它给了我这个错误
TypeError: 'undefined' is not an object (evaluating 'win.focus')
有人可以帮我如何模拟 $window 上的焦点功能吗?
_.noop
什么也不做,returns 什么也不做。因此,当您执行 var win = $window.open('url', '_blank', getBrowserSize());
时,win
未定义。
您的模拟使用 noop
作为 open
方法,returns undefined
进入 win
变量。使用 returns 另一个模拟的函数,例如如:
$window: {
open: jasmine.createSpy('$window.open'),
focus: _.noop
}
$window.open.and.returnValue({
// this is the second mock
focus: jasmine.createSpy('focus')
});
_.noop 没有 return 值,所以 win 实际上是未定义的。
您可能想尝试这样的事情:
var $window = {open: function() { return this }, focus: _.noop}
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
我正在为这行代码创建一个 jasmine 测试:
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
我试图以此来嘲笑它
$window: {open: _.noop, focus: _.noop}
但是当我 运行 测试时它给了我这个错误
TypeError: 'undefined' is not an object (evaluating 'win.focus')
有人可以帮我如何模拟 $window 上的焦点功能吗?
_.noop
什么也不做,returns 什么也不做。因此,当您执行 var win = $window.open('url', '_blank', getBrowserSize());
时,win
未定义。
您的模拟使用 noop
作为 open
方法,returns undefined
进入 win
变量。使用 returns 另一个模拟的函数,例如如:
$window: {
open: jasmine.createSpy('$window.open'),
focus: _.noop
}
$window.open.and.returnValue({
// this is the second mock
focus: jasmine.createSpy('focus')
});
_.noop 没有 return 值,所以 win 实际上是未定义的。
您可能想尝试这样的事情:
var $window = {open: function() { return this }, focus: _.noop}
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();