Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jasmine-TypeError:';未定义';不是对象(评估';win.focus';)_Javascript_Karma Jasmine - Fatal编程技术网

Javascript Jasmine-TypeError:';未定义';不是对象(评估';win.focus';)

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

我正在为这行代码创建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函数吗?

\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();

没问题。很高兴能帮忙。