Patrzę na przykład TODO MVC AngularJS i widzę, że aplikacja jest zdefiniowana jako moduł.Testowanie modułu Sterownik modułu AngularJS
var todomvc = angular.module('todomvc', []);
Wewnątrz kontrolerów, widzę je zdefiniować jako:
todomvc.controller('TodoCtrl', function TodoCtrl($scope, $location, todoStorage, filterFilter) {
//...
});
Moje pytanie dotyczy testów jednostkowych ... Jak mogę napisać badanej jednostki dla tej klasy?
Próbowałem rzeczy jak:
describe('TodoCtrl', function() {
var controller;
beforeEach(function() {
controller = todomvc.TodoCtrl;
});
afterEach(function() {
controller = null;
});
describe('addTodo() method', function() {
console.log(controller)
it('should do something', function() {
expect(typeof controller.addTodo).toBe(true); //should fail
});
});
});
... ale wtedy „kontroler” kończy się zerowa lub nieokreślone.
Czy muszę zmodyfikować aplikację TODO MVC, aby funkcja przekazana do todomvc.controller() nie była anonimowa?
Każdy kierunek zostałby doceniony, ponieważ jestem nowy w Angular.
Sprawdzę, że obecnie, dzięki! – arthurakay
Ten przykład bardzo pomaga ... ale nadal pojawia się błąd "TodoCtrl nie jest zdefiniowany", co powoduje, że myślę, że muszę zmienić sposób, w jaki jest zapisywany kontroler w przykładzie TODO MVC (co bardziej przypomina przykład, który podłączyłeś). Ale jestem na dobrej drodze, dzięki! – arthurakay
Po dalszej inspekcji, muszę użyć "scope.addTodo()" zamiast "ctrl.addTodo()" po użyciu twojej sugestii. Dzięki! – arthurakay