【问题标题】:Test AngularJS $routeProvider resolve using Karma使用 Karma 测试 AngularJS $routeProvider 解析
【发布时间】:2014-11-05 11:24:13
【问题描述】:

我不确定如何测试 routeProvider 解析的结果。

  1. 在路由提供者中如何调用某些东西。

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

在以下示例中,这是我所缺少的:

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

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?
});

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

【问题讨论】:

    标签: angularjs jasmine karma-runner route-provider


    【解决方案1】:

    我知道这是旧的,但我遇到了同样的问题,所以回答它。

    解析后的数据进入 $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");
    });
    

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2013-05-16
      • 2014-09-20
      • 2013-05-15
      • 1970-01-01
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多