我只是將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