Это все, что вам нужно охватить с точки зрения модульного тестирования метода close
. Проверка того, что он вызывается при нажатии кнопки, больше подходит для тестирования функциональности в тестах e2e.
Первый тест проверяет, что он устанавливает переменную экземпляра в false. Чтобы убедиться, что это так, мы вручную устанавливаем переменную в true перед вызовом close ().
it('should close the banner', async(() => {
// Arrange
const app = fixture.debugElement.componentInstance;
app.cpBanner = true;
// Act
app.close();
// Assert
expect(app.cpBanner).toBe(false);
}));
Второй тест проверяет, вызывает ли он сервис для создания куки. Метод close фактически не создает cookie в конце концов. Проверять фактическое создание файлов cookie следует в спецификации файла CookieService. Чтобы утверждать, что метод был вызван, вы используете Jasmine spies . Итак, мы сначала получаем дескриптор сервиса, который был внедрен в приложение, и следим за его методом put.
Примечание: я не смог проверить, работает ли приведенный ниже код, потому что у меня нет службы, но он должен хотя бы продемонстрировать логику.
it('should call the cookie service to create the cookie', async(() => {
// Arrange
const app = fixture.debugElement.componentInstance;
const cookieService = fixture.TestBed.get(CookieService);
spyOn(cookieService, 'put');
// Act
app.close();
// Assert
expect(cookieService.put).toHaveBeenCalledWith('CP_BANNER', 'true');
}));