Tôi có một dịch vụ trong ứng dụng góc của tôi trông giống như thế này:Làm thế nào để kiểm tra chức năng 'tư nhân' trong một dịch vụ góc với Karma và Jasmine
angular.module('BracketService', []).factory('BracketService', [function() {
function compareByWeight(a, b) {
return a.weight - b.weight;
}
function filterWeightGroup(competitors, lowWeight, highWeight) {
//filter stuff
}
function createBracketsByWeightGroup(weightGroup) {
//create some brackets
}
//set some base line values
var SUPER_HEAVY_WEIGHT = 500;
var SUPER_LIGHT_WEIGHT = 20;
return {
//create brackets from a list of competitors
returnBrackets: function(competitors) {
var brackets = {};
//get super light weights
brackets.superLightWeights = createBracketsByWeightGroup(
filterWeightGroup(competitors, 0, SUPER_LIGHT_WEIGHT)
.sort(compareByWeight)
);
brackets.superHeavyWeights = createBracketsByWeightGroup(
filterWeightGroup(competitors, SUPER_HEAVY_WEIGHT, Infinity)
.sort(compareByWeight)
);
brackets.middleWeights = createBracketsByWeightGroup(
filterWeightGroup(competitors, SUPER_LIGHT_WEIGHT, SUPER_HEAVY_WEIGHT)
.sort(compareByWeight)
);
return brackets;
}
};
}]);
Tôi muốn đơn vị kiểm tra không chỉ là chức năng/các thuộc tính được hiển thị trong câu lệnh trả về, nhưng cũng có các hàm nằm ngoài câu lệnh trả về.
thử nghiệm của tôi hiện đang thiết lập một cái gì đó như thế này:
describe('BracketService', function() {
beforeEach(module('bracketManager'));
it('calling return brackets with no competitors will return 3 empty weight classes', inject(function(BracketService) {
var mockCompetitors = [];
var mockBracketResult = {superHeavyWeights: [[]], superLightWeights: [[]], middleWeights: [[]]};
expect(BracketService.returnBrackets(mockCompetitors)).toEqual(mockBracketResult);
}));
});
Nhưng làm thế nào để kiểm tra so sánh, chức năng lọc và createBrackets không được tiếp xúc bởi câu lệnh return?
Cảm ơn!