我只是将ngMock包含到我的项目中,因为我需要$ httpBackend。我有一帮业报/茉莉测试设置的,并包括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搜索时没有显示任何相关结果。 解决方案:如果您发现自己来自Google Results,请看看这些:post 1,post 2。
[编辑::]无法使用angularAMD的任何解决方案。有什么建议么?
您是否找到了解决方案?有完全相同的问题! – stianlp 2015-02-23 17:06:33
@stianlip是的,你需要设置一个全面的漏斗所有未解决的模板:'$ httpBackend.whenGET(/ \。html $/g).respond(“”);'在我的测试中,我使用一个单独的'app.js'文件来引导应用程序,该应用程序不声明任何$ routeProvider配置。 – BuildTester1 2015-02-26 18:05:50