由于ngRoute的$ routeProvider ...... ngMock抛出模板加载错误?

时间:2014-11-04 20:07:03

标签: angularjs jasmine karma-jasmine ngroute angular-amd

我刚刚将ngMock包含在我的项目中,因为我需要$ httpBackend。我有一堆karma / jasmine测试设置,并且在包含ngMock之后,由于它导致的错误,所有内容都会中断:

PhantomJS 1.9.7 (Windows 7): Executed 0 of 41 SUCCESS (0 secs / 0 secs)
PhantomJS 1.9.7 (Windows 7) ERROR
  Error: Unexpected request: GET home/home.html
  No more request expected
  at C:/dev/app/bower_components/angular-mocks/angular-mocks.js:1181

似乎它不喜欢ngRoute / $ routeProvider。具体来说,它打破了否则/ redirectTo语句。如果我评论出该部分,业力/茉莉花测试工作没有错误。

  $routeProvider
    .when('/home', angularAMD.route({
      templateUrl: 'home/home.html',
      controller: ''
    }))
    .otherwise({
      redirectTo: '/home'
    });

注意,我正在使用angularAMD(用于延迟加载),但即使我在没有angularAMD.route()的情况下重写该部分只使用{},它仍然会抛出相同的错误。即:

  $routeProvider
    .when('/home', {
      templateUrl: 'home/home.html',
      controller: ''
    })
    .otherwise({
      redirectTo: '/home'
    });

知道为什么ngMock不喜欢ngRoute?现在我已经创建了一个解决方法,我在运行karma / jasmine测试时跳过$ routeProvider部分。但是我想了解发生了什么,我不应该在单元测试期间设置$ routeProvider(这是不好的做法)?

[编辑:] 问题似乎也出现在其他细分中。我正在运行一个包含加载模板的服务的测试,它也会抛出错误:

Error: Unexpected request: GET components/modal/modal.html
No more request expected
    at $httpBackend (C:/dev/app/bower_components/angular-mocks/angular-mocks.js:1181)

[编辑:] 在我致电$httpBackend.flush();

时似乎抛出错误

[编辑:] 很棒,发现与问题相关的帖子。当我搜索时,无法相信谷歌没有显示任何相关结果。 解决方案:如果您发现自己来自Google搜索结果,请查看以下内容:post 1post 2

[编辑:] 无法使用angularAMD获取任何解决方案。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

我的问题是我没有加载应用程序的完整模块(这就是我与ngRoute关联的内容)。

在我的User.tests.js文件中,我有

 beforeEach(module('App.services'));

在我的app.js文件中,我有:

  App = angular.module("App", [
    "ngRoute"
    "App.templates"
    "App.filters"
    "App.services"
    "App.controllers"
    "App.directives"
    "ui.bootstrap"
  ]);

在我的User.js服务中,我实际上正在使用$route解决方案 对我来说是切换我的User.tests.js以使用模拟模块"App" - beforeEach(module("App"));这样,测试就会加载所有正确的依赖项。