-
Notifications
You must be signed in to change notification settings - Fork 0
5 Tests de l'application
Le framework de test utilisé est Jasmine. C'est est un framework de tests open source pour JavaScript. Il possède une syntaxe assez facile à prendre en main. Les tests unitaires sont des méthodes permettant de tester de façon unitaire des éléments d’un code source. Leur principal objectif est de vérifier le bon fonctionnement de sous-ensembles de code tels que les fonctions, les procédures, les classes, etc. Les tests unitaires garantissent que ces éléments de base fonctionnent comme souhaité et préviennent des potentiels bugs.
Tous les tests sont situés dans le fichier test/ControllerSpec.js. De nouveaux tests peuvent être ajoutés dans ce fichier.
Les tests sont facilement lancés par l'ouverture du fichier test/SpecRunner.html dans un navigateur.
it('should show entries on start-up', function () {
var todo = {title: 'my todo'};
setUpModel([todo]);
subject.setView('');
expect(view.render).toHaveBeenCalledWith('showEntries', [todo]);
});
it("should show active entries", function() {
var todo = {title: 'my todo'};
setUpModel([todo]);
subject.setView('#/active');
expect(view.render).toHaveBeenCalledWith('showEntries', [todo]);
});
it('should show completed entries', function () {
var todo = {title: 'my todo'};
setUpModel([todo]);
subject.setView('#/completed');
expect(view.render).toHaveBeenCalledWith('showEntries', [todo]);
});
it('should highlight "All" filter by default', function () {
setUpModel([]);
subject.setView("");
expect(view.render).toHaveBeenCalledWith("setFilter", "");
});
it('should highlight "Active" filter when switching to active view', function () {
setUpModel([]);
subject.setView("/active");
expect(view.render).toHaveBeenCalledWith("setFilter", "active");
});
it('should toggle all todos to completed', function () {
var todos = [{
id: 42,
title: 'my todo',
completed: false
}, {
id: 21,
title: 'another todo',
completed: false
}];
setUpModel(todos);
subject.setView('');
view.trigger('toggleAll', {completed: true});
expect(model.update).toHaveBeenCalledWith(42, {completed: true}, jasmine.any(Function));
expect(model.update).toHaveBeenCalledWith(21, {completed: true}, jasmine.any(Function));
});
it('should update the view', function () {
var todos = [{
id: 42,
title: 'my todo',
completed: true
}];
setUpModel(todos);
subject.setView('');
view.trigger('toggleAll', {completed: false});
expect(view.render).toHaveBeenCalledWith('elementComplete', {id: 42, completed: false});
});
it('should add a new todo to the model', function () {
setUpModel([]);
subject.setView('');
view.trigger('newTodo', 'a new todo');
expect(model.create).toHaveBeenCalledWith('a new todo', jasmine.any(Function));
});
it('should remove an entry from the model', function () {
var todo = {id: 42, title: 'my todo', completed: true};
setUpModel([todo]);
subject.setView('');
view.trigger('itemRemove', {id: 42});
expect(model.remove).toHaveBeenCalledWith(42, jasmine.any(Function));
});