Javascript 如何在角度JS投影上对window.location进行单元测试分配?
我正在开发一个AngularJS/Javascript单页应用程序(SAP),它位于一个定制的反向代理之后,使用KeyClope进行单点登录(SSO) 当用户单击“注销”时,在执行其他操作后,应用程序将执行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授权的所有应用程序 如果我们允许这条线执行,因果报应就会抱怨 你的一些测试重新加载了一整页 此错误使整个测试套件失败 我似乎无法
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);
});
看起来很有希望。我明天试试。谢谢