2016-05-23 20 views
1

我有一個控制器,我正在寫測試,並且控制器有一個功能,當控制器加載時運行。這個函數有一個if語句,我想測試兩種情況。我的問題是,我正在加載的$範圍只設置爲「如果」而不是其他,所以我不知道如何測試其他。我嘗試將「skillList」設置爲一個數組,該數組將使該函數進入else部分,但這不起作用。測試「it」時有沒有辦法重新加載控制器?業力測試,relead控制器與不同的數據集

這是在我的控制器

function loadIt() { 
    if (!someService.skillList.length) { 
     someService.getCategories().then(function(res) { 
     someService.skillsLoaded = true; 
     }); 
    } else { 
     someService.skillcategories = someService.parseCategories(someService.skillList); 
     someService.skillsLoaded = true; 
    } 
    } 

    loadIt(); 

而在我的測試功能我有

beforeEach(function() { 
    return inject(function($injector) { 
     this.someService = { 
     skillList: [], 
     getCategories: function() { 
     var deferred = $q.defer(); 
     deferred.resolve(); 
     return deferred.promise; 
     }, 
     parseCategories: function(param) { 
     return param; 
     } 
    }; 

所以測試負載可達skillList作爲空陣列我有該部分的測試,但我想測試其他我需要skillList [1,2]的地方。想法?

回答

0

是的,你可以在範圍傳遞,當你在測試中像這樣創建控制器:

var scope = $rootScope.$new(); 
scope.skillcategoriesList = ['list', 'goes', 'here']; 

var controller = $controller('ControllerName', { $scope: scope });