小编Jul*_*els的帖子

对启用 Keycloak 的 Angular 应用程序进行单元测试

我正在尝试为使用 Keycloak 进行身份验证的 Angular 应用程序编写一个测试套件。

但是,由于 Keycloak 要求您手动引导 Angular 并设置一些拦截器,因此由于以下错误,我无法启动任何测试:

Error: $injector:unpr
Unknown Provider: AuthProvider <- Auth <- authInterceptor <- $http <- $templateRequest <- $route
Run Code Online (Sandbox Code Playgroud)

这是引发错误的拦截器的代码:

angular.module('MPMReportGenerator')
  .factory('authInterceptor', function authInterceptor ($q, Auth, $log) {
    return {
      request: function (config) {
        var deferred = $q.defer()
        Auth.updateToken(5).success(function () {
          config.headers = config.headers || {}
          config.headers.Authorization = 'Bearer ' + Auth.token
          deferred.resolve(config)
        }).error(function () {
          deferred.reject('Failed to refresh token')
        })
        $log.info(deferred.promise)
        return deferred.promise
      }
    }
  })
Run Code Online (Sandbox Code Playgroud)

我的想法是我应该模拟拦截器并让它返回请求。但是,我不知道如何做到这一点,因为这个拦截器永远不会作为依赖项注入任何地方,它只是用上面的块声明,就是这样。我对模拟服务的理解是它们需要注入到某个地方才能被模拟。

我在 Angular 中的 Keycloak 实现直接来自他们的示例(如果有帮助的话)。

编辑 …

javascript jasmine angularjs keycloak

5
推荐指数
1
解决办法
4332
查看次数

标签 统计

angularjs ×1

jasmine ×1

javascript ×1

keycloak ×1