Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 如何在角度JS投影上对window.location进行单元测试分配?_Javascript_Angularjs_Unit Testing_Mocking_Karma Jasmine - Fatal编程技术网

Javascript 如何在角度JS投影上对window.location进行单元测试分配?

Javascript 如何在角度JS投影上对window.location进行单元测试分配?,javascript,angularjs,unit-testing,mocking,karma-jasmine,Javascript,Angularjs,Unit Testing,Mocking,Karma Jasmine,我正在开发一个AngularJS/Javascript单页应用程序(SAP),它位于一个定制的反向代理之后,使用KeyClope进行单点登录(SSO) 当用户单击“注销”时,在执行其他操作后,应用程序将执行 window.location = reverseProxyHost + '/logout'; 确保用户完全注销,不仅从该应用程序,而且从KeyClope SSO授权的所有应用程序 如果我们允许这条线执行,因果报应就会抱怨 你的一些测试重新加载了一整页 此错误使整个测试套件失败 我似乎无法

我正在开发一个AngularJS/Javascript单页应用程序(SAP),它位于一个定制的反向代理之后,使用KeyClope进行单点登录(SSO)

当用户单击“注销”时,在执行其他操作后,应用程序将执行

window.location = reverseProxyHost + '/logout';
确保用户完全注销,不仅从该应用程序,而且从KeyClope SSO授权的所有应用程序

如果我们允许这条线执行,因果报应就会抱怨

你的一些测试重新加载了一整页

此错误使整个测试套件失败

我似乎无法从测试的上下文中重写
window.location
对象值

如果我创建一个
localContext
对象,然后尝试

with(localContext){
测试将失败,因为
的“使用严格的”
不兼容


您知道如何确保以预期结果执行该行吗?

尝试从angular使用
$window
,以及
$window.location.replace
而不是
window.location=“newlocation.com”
。 那么你应该可以这样嘲笑:

  var $window = { location: { replace: jasmine.createSpy('replace') } };
  module('app', function ($provide) {
     $provide.value('$window', $window);
  });

看起来很有希望。我明天试试。谢谢