我們剛剛開始在我們的Angular應用程序中進行單元測試,我們正在使用業力/摩卡/ chai框架進行單元測試。我對我們定義的各種服務和工廠進行了一些基本的單元測試,單元測試的效果很好。但是現在我們要測試一些控制器並評估控制器正在修改的範圍變量。Angular/Mocha/Chai - 單元測試初始化控制器?
這裏是一個這樣的控制器的一個示例:
angular.module('App').controller('myCtrl', ['$scope', 'APIProxy',
function ($scope, APIProxy) {
$scope.caseCounts = {caseCount1: 0, caseCount2: 0};
$scope.applyCounts = function() {
$scope.caseCounts.caseCount1 = {...some case count logic...}
$scope.caseCounts.caseCount2 = {...some case count logic...}
};
APIProxy.getAll().then(function (data) {
{...do a bunch of stuff...}
$scope.data = data;
$scope.applyCounts();
});
}]
);
現在,當我單元測試我想只是一個簡單的開始「做的$ scope.caseCounts具有值> 0,則我將從那裏建造。但是,如何使控制器導致APIProxy服務運行以及如何處理數據的最終返回並不明顯。我們已經嘗試了$ scope.getStatus()和$ scope.apply()以及其他一些東西,但是我覺得我們離開了這個標記,並且我們從根本上失去了一些關於如何去做這件事的東西。
目前我們的控制器測試儀的樣子:
describe("myCtrl unit tests",function(){
beforeEach(module('App'));
var ctrl, APIProxy;
beforeEach(inject(function ($rootScope, $controller, _APIProxy_)
{
$scope = $rootScope.$new();
APIProxy = _APIProxy_;
ctrl = $controller('myCtrl', {$scope: $scope, APIProxy: APIProxy});
}));
it('Loads data correctly', function() {
expect(ctrl).to.not.be.undefined;
//??? what else do we do here to fire the getAll function in controller?
});
});
非常感謝!這正是我缺乏的那種信息。 – Gatmando