Javascript Jasmine-TypeError:';未定义';不是对象(评估';win.focus';)
我正在为这行代码创建jasmine测试:Javascript Jasmine-TypeError:';未定义';不是对象(评估';win.focus';),javascript,karma-jasmine,Javascript,Karma Jasmine,我正在为这行代码创建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上的focus
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
我试图以此来嘲弄它
$window: {open: _.noop, focus: _.noop}
但是当我运行测试时,它会给我这个错误
TypeError: 'undefined' is not an object (evaluating 'win.focus')
有人能帮我模拟$window上的focus函数吗?
\uUp
不执行任何操作,也不返回任何内容。因此,当您执行var win=$window.open('url','u blank',getBrowserSize())时
,win
未定义。您的模拟使用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')
});
_.noop没有返回值,因此win实际上未定义 您可能想尝试以下方法:
var $window = {open: function() { return this }, focus: _.noop}
var win = $window.open('url', '_blank', getBrowserSize());
win.focus();
没问题。很高兴能帮忙。