0
我有這個簽名配置功能:如何在AngularJS中測試配置函數時模擬提供者?
tmsNav = angular.module('tmsNav', ['tmsAuthSvc', 'tmsConfig', 'ui.router'])
tmsNav.config(function ($stateProvider, $urlRouterProvider, statesConfig) {
// uses the constant statesConfig to configure $stateProvider and $urlRouterProvider
});
這裏是我的描述塊:
describe('tmsNav.config() >', function() {
it('configures states correctly', function() {
module('tmsConfig', function ($provide) {
$provide.constant('statesConfig', states1);
$provide.factory('$state', function() {
return {
state: function() {
console.log('state()!!!');
}
};
});
});
module('tmsNav');
inject(function ($state) {
expect($state.get().length).toBe(4);
});
});
});
的不斷成功覆蓋,但$ stateProvider不是。我試過使用$provide.factory('$state', ...)
,$provide.constant('$stateProvider', ...)
,$provide.value('$state', ...)
等...沒有任何工作。
我需要模擬$ stateProvider,因爲一旦配置它就會保留進入下一個測試的配置。所以當我運行後續測試時,我不應該得到有關重複配置值的錯誤。
我花了很長時間試圖解決這個問題,只是在發佈問題三分鐘後自己解決它。衛生署! – 2014-11-05 20:38:47
不用擔心它經常發生:) – Whisher 2014-11-05 20:42:59