Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS:单元测试ui路由器状态更改_Angularjs_Unit Testing_Karma Jasmine - Fatal编程技术网

AngularJS:单元测试ui路由器状态更改

AngularJS:单元测试ui路由器状态更改,angularjs,unit-testing,karma-jasmine,Angularjs,Unit Testing,Karma Jasmine,我对angular的单元测试相当陌生,所以请容忍我 我的应用程序有$stateProvider设置,希望测试路由部分是否正常工作 假设我有这样的配置: angular.module("app.routing.config", []).config(function($stateProvider, $urlRouterProvider) { $stateProvider.state("home", { url: "/", templateUrl: "app/modules/ho

我对angular的单元测试相当陌生,所以请容忍我

我的应用程序有$stateProvider设置,希望测试路由部分是否正常工作

假设我有这样的配置:

angular.module("app.routing.config", []).config(function($stateProvider, $urlRouterProvider) {
  $stateProvider.state("home", {
    url: "/",
    templateUrl: "app/modules/home/page/home_page.html",
    controller: "HomePageController",
    resolve: {
      setPageTitle: function($rootScope) {
        return $rootScope.pageTitle = "Home";
      }
    }
  }).state("somethingelse", {
    url: "/",
    templateUrl: "app/modules/home/page/somethingelse.html",
    controller: "SomeThingElseController",
    resolve: {
      setPageTitle: function($rootScope) {
        return $rootScope.pageTitle = "Some Thing Else";
      }
    }
  });
  return $urlRouterProvider.otherwise('/');
});
我在博客上看到了关于如何为ui路由器配置设置单元测试的内容,因此我尝试采用相同的方法,下面是我正在尝试的测试:

'use strict';
describe('UI-Router State Change Tests', function() {
  var $location, $rootScope, $scope, $state, $templateCache;
  beforeEach(module('app'));
  beforeEach(inject(function(_$rootScope_, _$state_, _$templateCache_, _$location_) {
    $rootScope = _$rootScope_;
    $state = _$state_;
    $templateCache = _$templateCache_;
    $location = _$location_;
  }));
  describe('State Change: home', function() {
    beforeEach(function() {
      $templateCache.put(null, 'app/modules/home/page/home_page.html');
    });
    it('should go to the home state', function() {
      $location.url('home');
      $rootScope.$digest();
      expect($state.href('home')).toEqual('#/');
      expect($rootScope.pageTitle).toEqual('Home');
    });
  });
});
运行测试时,输出中出现以下错误:

错误:意外请求:获取app/modules/home/page/home\u page.html

很明显,我在这里做错了什么,所以任何帮助或指点都将不胜感激


我确实遇到了$httpBackend,这是否也是我应该在这里使用的东西,所以告诉我的测试期待对我的状态更改测试正在进行的html页面的请求?

这几乎可以肯定是由于在应用程序/测试运行时异步加载了部分html视图(
home\u page.html

为了处理这个问题,您可以将html片段预处理为Javascript字符串,然后通过测试同步加载

看看哪一个可以解决你的问题