gpt4 book ai didi

javascript - 如何在 Angular JS 投影上对 window.location 进行单元测试分配?

转载 作者:行者123 更新时间:2023-11-30 15:53:50 24 4
gpt4 key购买 nike

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

当用户点击“注销”,在做了一些其他事情后,应用程序会执行

window.location = reverseProxyHost + '/logout';

确保用户完全注销,不仅仅是从这个应用程序,而是从 Keycloak SSO 授权的所有应用程序。

如果我们允许这条线执行,Karma 会提示

Some of your tests did a full page reload!

此错误无法通过整个测试套件。

我似乎无法从我的测试上下文中覆盖 window.location 对象值。

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

with(localContext){

测试将失败,因为 with'use strict' 不兼容。

关于如何确保生产线以预期结果执行的任何想法?

最佳答案

尝试使用 Angular 中的 $window$window.location.replace 而不是 window.location = "newlocation.com"。然后你应该能够像这样模拟:

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

关于javascript - 如何在 Angular JS 投影上对 window.location 进行单元测试分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38899347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com