Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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/7/elixir/2.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 由于ngRoute';s$routeProvider。。。?_Angularjs_Jasmine_Karma Jasmine_Ngroute_Angular Amd - Fatal编程技术网

Angularjs 由于ngRoute';s$routeProvider。。。?

Angularjs 由于ngRoute';s$routeProvider。。。?,angularjs,jasmine,karma-jasmine,ngroute,angular-amd,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 m

我只是将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。具体来说,它在otherwise/redirectTo语句中中断。如果我把这一部分注释掉,那么karma/jasmine测试是正确的

  $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()时,似乎抛出了错误

[编辑:很好,找到了与此问题相关的帖子。真不敢相信谷歌在我搜索时没有显示任何相关结果解决方案:如果您在谷歌搜索结果中发现自己在这里,请查看以下内容:


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

我的问题是,我没有加载应用程序的完整模块(这就是我与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”
-
在每个模块(模块(“App”)
之前;这样,测试将加载所有正确的依赖项。

您找到解决方案了吗?有完全相同的问题@是的,您需要设置一个“一网打尽”来收集所有未解析的模板:
$httpBackend.whenGET(/\.html$/g).response(“”)app.js
文件来引导应用程序,它没有声明任何$routeProvider配置。