Я столкнулся с проблемой при написании модульных тестов для сервиса, который имеет некоторые действия в конструкторе.Он блокирует мой тест, и я не знаю, как с ним справиться: (
Это класс обслуживания:
import { Injectable } from '@angular/core';
import { Storage } from '@dvs-angular/storage';
const COOKIE_STORAGE_KEY = 'cookiePanelDisplayed';
@Injectable()
export class CookiePanelService {
public panelVisible: boolean = true;
constructor(
private storage: Storage
) {
this.panelVisible = !this.storage.has(COOKIE_STORAGE_KEY);
}
public close(): void {
this.panelVisible = false;
if (this.storage.has(COOKIE_STORAGE_KEY)) {
return;
}
this.storage.set(COOKIE_STORAGE_KEY, true);
}
}
и вот так выглядят мои тесты
import { TestBed, inject } from '@angular/core/testing';
import { CookiePanelService } from './cookie-panel.service';
import { Storage } from '@dvs-angular/storage';
const storageMock = {
has: jasmine.createSpy()
};
const COOKIE_STORAGE_KEY = 'cookiePanelDisplayed';
describe('Service: CookiePanelService', () => {
let cookiePanelService: CookiePanelService;
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
CookiePanelService,
{
provide: Storage,
useValue: storageMock
},
]
});
});
beforeEach(
inject([CookiePanelService], (service: CookiePanelService) => {
cookiePanelService = service;
})
);
it('should set panelVisible to false on close', () => {
cookiePanelService.panelVisible = true;
cookiePanelService.close();
expect(cookiePanelService.panelVisible).toBe(false);
});
});
В консоли я получаю: TypeError: this.storage.has is not a function
Можете ли вы дать совет, как поступить с конструктором и как избежать подобных ситуаций?.