使用Karma测试AngularJS$routeProvider解析

使用Karma测试AngularJS$routeProvider解析,angularjs,jasmine,karma-runner,route-provider,Angularjs,Jasmine,Karma Runner,Route Provider,我不确定如何测试routeProvider resolve上的结果 在路由提供程序中,我如何调用确定 如何测试返回结果是否符合我的预期 在下面的示例中,这就是我所缺少的: 假设我有以下路由提供程序配置: var rt = angular.module("ResolveTest",[]); rt.config(["$routeProvider",function($routeProvider) { $routeProvider.when("/",{ templateUrl: "rt.

我不确定如何测试routeProvider resolve上的结果

  • 在路由提供程序中,我如何调用确定

  • 如何测试返回结果是否符合我的预期

  • 在下面的示例中,这就是我所缺少的:

    假设我有以下路由提供程序配置:

    var rt = angular.module("ResolveTest",[]);
    
    rt.config(["$routeProvider",function($routeProvider)
    {
      $routeProvider.when("/",{
        templateUrl: "rt.html",
        controller: "ResolveCtrl",
        resolve: {
          data: ["$q","$timeout",function($q,$timeout)
          {
            var deferred = $q.defer();
    
            $timeout(function()
            {
              deferred.resolve("my data value");
            },2000);
    
            return deferred.promise;
          }]
        }
      });
    }]);
    
    这是spec.js文件:

    describe("Testing route provide resolve", function() {
    
    var routes;
    
    
    it('should test routeProvider', function() {
    
          inject(function($route, $location, $rootScope) {
              routes = $route;
          });
    
          // here I would like to check that my data value was resolved from the route.
          // how can i do that?
    });
    

    有人能给出一个完整的工作示例,说明如何调用正确的路由并测试解决方案吗?

    我知道这是一个老问题,但我面临着同样的问题,所以回答它

    解析的数据将其转换为$route.current.locals属性

    您可以使用以下方法进行测试:

    it('should test routeProvider', function() {
    
      inject(function($route, $location, $rootScope) {
          routes = $route;
      });
    
      // here I would like to check that my data value was resolved from the route.
      expect(routes.current.locals.data).toBe("my data value");
    });