Muszę zastosować testowanie do konkretnego kontrolera.Jak przetestować funkcję poza zakresem, a to w AngularJS Unit Testing
Testowanie regulator jest ok:
angular.module('app', []).controller('PasswordController', function PasswordController($scope) {
$scope.password = '';
$scope.grade = function() {
var size = $scope.password.length;
if (size > 8) {
$scope.strength = 'strong';
} else if (size > 3) {
$scope.strength = 'medium';
} else {
$scope.strength = 'weak';
}
};
});
Ale chciałbym Test:
angular.module('app', []).controller('PasswordController', function PasswordController($scope) {
var vm = this;
vm.password = '';
function grade() {
var size = vm.password.length;
if (size > 8) {
vm.strength = 'strong';
} else if (size > 3) {
vm.strength = 'medium';
} else {
vm.strength = 'weak';
}
};
});
Próbowałem przetestować kontroler za pomocą poniższego kodu:
describe('Test', function() {
beforeEach(module('app'));
var MainCtrl, scope;
beforeEach(inject(function ($controller, $rootScope) {
scope = $rootScope.$new();
MainCtrl = $controller('PasswordController', {
$scope: scope
});
}));
it('Should not throw Exception', function() {
scope.password = 'abc';
var call = function() {
MainCtrl.grade();
}
expect(call).not.toThrow();
});
});
Ale dostaję ten błąd: Oczekiwana funkcja nie do rzucenia, ale rzucił TypeError: "undefined" is n dla funkcji (ocena "MainCtrl.grade()").
Ten stackOverflow Question pomóż mi zastosować testowanie do funkcjonowania w "tym". Ale chcę przetestować funkcje z zakresu $ i "to" ...
Dowolny pomysł jak zastosować testowanie jednostki do tego kontrolera?
myślę, że PO celowo utrzymywane metody "prywatny". Upublicznienie go tylko w celu przetestowania go nie brzmi dobrze dla mnie. – alecxe
Więc, nie mogę przetestować metody, która nie jest dołączona do kontrolera ??? –
Jeśli chcesz przetestować go bezpośrednio, musi on w jakiś sposób zostać ujawniony. Jeśli zostanie wywołana z innej akcji z poziomu kontrolera, można to sprawdzić. Na przykład, jeśli masz watcher na vm.password, który wykonał metodę klasy, możesz zweryfikować, że właściwość strength jest taka, jaka powinna być po trawieniu. –