0
저는 테스트에서 절대적인 멍청이이고 수십 개의 튜토리얼로 도움을받지 못했습니다. 그러니 제발 내게 맡겨주십시오.카르마로 AngularJS 테스트하기
누군가가 몇 가지 사항을 이해할 수 있도록 도와 주시겠습니까?
함수가 정의되어 있는지 확인하는 데 문제가 없지만 함수가 올바른 작업을 수행하고 있다고 가정하고 반환하는 방법을 확인하려면 어떻게해야합니까? DB와 나는 데이터 세트 전체를 조롱 할 수 없다. 나는 mockfunction으로 어떻게 든 그것을 여전히 체크하고 있는가?
데이터 집합을 인수로 받아들이는 경우 함수에 대한 인수를 모의 어떻게해야합니까? 내부에 몇 가지 더 많은 기능을 사용하는 함수를 테스트하려면 어떻게합니까? 여기
내가 테스트하는 방법을 알아낼 수 없습니다 기능 중 하나의 코드 예제 :angular.module('app').controller(controllerId, ['$scope', hourinput]);
function hourinput($scope) {
vm.changeWeek = function (count) {
if (count > 0) {
vm.selectedDate = moment(vm.selectedDate).add(count, 'weeks');
} else {
vm.selectedDate = moment(vm.selectedDate).subtract(-count, 'weeks');
}
vm.selectedWeek = moment(vm.selectedDate).isoWeek();
if (vm.selectedWeek != vm.previousSelectedWeek || vm.selectedYear != vm.previousSelectedYear) {
vm.previousSelectedWeek = vm.selectedWeek;
vm.previousSelectedYear = vm.selectedYear;
vm.selectedYear = moment(vm.selectedDate).isoWeekYear();
vm.prevWeek = moment(vm.selectedDate).subtract(1, 'weeks').isoWeek();
vm.nextWeek = moment(vm.selectedDate).add(1, 'weeks').isoWeek();
vm.editingMode = -1;
if (count == -1) {
getHourInput(moment(vm.selectedDate).startOf('isoWeek').subtract(-count, 'weeks'), moment(vm.selectedDate).startOf('isoWeek').subtract(1, 'days'));
} else if (count == 1) {
getHourInput(moment(vm.selectedDate).startOf('isoWeek').add(count, 'weeks'), moment(vm.selectedDate).startOf('isoWeek').add(+count + 1, 'weeks').subtract(1, 'days'));
} else {
getHourInput();
}
}
applyHourInputFilter()
};
function applyHourInputFilter() {
vm.filteredHourInputs = vm.hourinputs.filter(hourInputFilter);
sortArr(vm.filteredHourInputs);
changeItemName()
}
}
을 그리고 여기에 오류가 있습니다 내 테스트입니다 : 내가 가진
describe('app module', function()
{
beforeEach(module('app'));
describe('Testing HI Controller', function(){
var ctrl;
var scope;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('hourinput', { $scope: scope });
}));
it('should spyOn changeWeek call through', function()
{
spyOn(scope, 'applyHourInputFilter').and.callThrough();
ctrl.changeWeek(1);
expect(scope.applyHourInputFilter).toHaveBeenCalled();
});
});
});
출력입니다 :
Test Outcome: Failed
Result Message: Error: applyHourInputFilter() method does not exist
Result StandardError: Error: applyHourInputFilter() method does not exist
at Object.<anonymous>
모든 조언이 많이 있습니다.
에 기능이
변화 범위에 연결되지 않은 것 전용 기능입니다. 또한 vm.applyHourInputFilter = function() { \t \t \t vm.filteredHourInputs = vm.hourinputs.filter (hourInputFilter);로 컨트롤러에 연결하려고했습니다. \t \t \t sortArr (vm.filteredHourInputs); \t \t \t changeItemName() \t \t} 도움이되지 않았습니다. –