我正在使用Keycloak进行单点登录(SSO)的自定义反向代理后面的AngularJS / Javascript单页面应用程序(SAP)。
当用户点击" logout"时,在执行其他操作后,应用程序将执行
window.location = reverseProxyHost + '/logout';
确保用户完全注销,而不仅仅是来自此应用程序,而是来自Keycloak SSO授权的所有应用程序。
如果我们允许此行执行,Karma会抱怨
您的部分测试会重新加载整页!
此错误导致整个测试套件失败。
我似乎无法从测试的上下文中覆盖window.location
对象值。
如果我创建了一个localContext
对象,然后尝试
with(localContext){
测试将失败,因为with
与'use strict'
不兼容。
我有什么想法可以确保线路正在按预期结果执行?
答案 0 :(得分:2)
尝试使用角度$window
和$window.location.replace
代替window.location = "newlocation.com"
。
然后,你可以这样嘲笑:
var $window = { location: { replace: jasmine.createSpy('replace') } };
module('app', function ($provide) {
$provide.value('$window', $window);
});