=====Простой теcт===== в Unit тетсировании в данном случае будет использоватся принцип AAA(Arrange/Act/Assert) \\ Arrange выполняет установку тестовых данных перед прохождением каждого теста(этот шаг называется setUp) \\ Act описывает сами действия которые должен выполнить метод \\ Assert этап проверки результата выполненных функций и ожидаемого результата теста \\ describe("First Test", function () { // Arrange var counter; beforeEach(function () { counter = 0; }); it("increments value", function () { // Act counter++; // Assert expect(counter).toEqual(1); }) it("decrements value", function () { // Act counter--; // Assert expect(counter).toEqual(-1); }) }); комментарии в коде служат лишь ориентиром и не выполняют никаких тестовых функций\\ для выполнения теста повторно после внесения изменений следует просто закрыть окно браузера и karma запустит тесты снова\\ для debug'a теста следует использовать debugger; в любом участке вашего кода, а затем начать отладку в developer tools вашего браузера\\ В данном примере используются функции: * **describe** - используется для группировки тестов * **beforeEach** - выполняет функцию setUp * **it** - содержит функционал выполняемого теста, принимает 2 аргумента : 1) названия тестового кейса, 2) функция с тестом * **expect ** - идентифицирует результат теста * **toEqual** - выполняет сравнение ожидаемого результата с результатом выполненного теста(expect) Обычно этап Assert содержит множество функций которые используются для определения точного условия успешного прохождения теста: * **expect(x).toEqual(val)** проверяет содержится ли в х такое же значение как и в val (но не обязательно один и тот же объект) * **expect(x).toBe(obj)** проверяет что х и obj одинаковые объекты * **expect(x).toMatch(regexp)** проверяет что х подходит под определение регулярного выражения * **expect(x).toBeDefined()** проверяет что х определен * **expect(x).toBeUndefined()** проверяет что х не определен (undefined) * **expect(x).toBeNull()** проверяет что х равно null * **expect(x).toBeTruthy()** проверяет что х true * **expect(x).toBeFalsy()** проверяет что х false * **expect(x).toContain(y)** проверяет что х строка которая содержит у * **expect(x).toBeGreaterThan(y)** проверяет что х больше у Для тестирования ситуаций ожиданием противоположного результата следует использовать приставку not: * **expect(x).not.toEqual(val)**