Unit-тесты в Angular
Быстрый старт
Скачиваем standalone версию Jasmine https://github.com/jasmine/jasmine/releases
Нам нужен файл SpecRunner.html, который лежит в корне.
Создаем свой hello.js
function helloWorld() {
return "Hello world!";
}
Подключаем его к SpecRunner.html . В нем же дописываем код
describe("Hello world", function() {
it("says hello", function() {
expect(helloWorld()).toEqual("Hello world!");
});
});
Запускаем и ищем строчку "Hello World says hello"
Давайте разберем, что происходит
В describe мы указываем описание самого теста. it - дает описание того, что должно происходить в тесте expect - запускает функцию, которую мы тестируем и метод для сравнения (в нашем примере toEqual)
Создание собственной функции сравнения
function gimmeANumber() {
var x = 4;
return x;
}
describe('Hello world', function () {
beforeEach(function () {
jasmine.addMatchers({
toBeDivisibleByTwo: function () {
return {
compare: function (actual, expected) {
return {
pass: (actual % 2) === 0
};
}
};
}
});
});
it('is divisible by 2', function () {
expect(gimmeANumber()).toBeDivisibleByTwo();
expect(5).not.toBeDivisibleByTwo();
});
});
Пример взят с http://stackoverflow.com/questions/23986665/jasmine-2-0-test-with-a-custom-matcher-fails-undefined-is-not-a-function
Дополнительные материалы:
Пошаговое руководство для быстрого старта
https://evanhahn.com/how-do-i-jasmine/
Фикс примера с добавлением собственного matcher'a http://stackoverflow.com/questions/23986665/jasmine-2-0-test-with-a-custom-matcher-fails-undefined-is-not-a-function
Введение в Jasmine
https://habrahabr.ru/post/167173/
Jasmine для NodeJS
https://github.com/jasmine/jasmine-npm https://jasmine.github.io/2.5/node.html
Unit-тесты с помощью Jasmine https://docs.angularjs.org/guide/unit-testing
Jasmine, Karma https://scotch.io/tutorials/testing-angularjs-with-jasmine-and-karma-part-1
Практика:
- Сделать функцию, которая находит максимум из трех чисел. Написать как минимум три теста для тестирования.