ng2-webstorage
ng2-webstorage copied to clipboard
Issues during testing
Versions (please complete the following information):
- NgxWebstorage: [e.g. 4.0.1]
- Angular: [e.g. 8.2.14]
Describe the bug
I have updated my application to angular 8 from 5. Everything is good from the application side but the unit tests are failing saying Can't resolve all parameters for LocalStorageService: (?). at syntaxError (http://localhost:9876/_karma_webpack_/node_modules/@angular/compiler/fesm2015/compiler.js:2175:1)
.
My test file looks like this: `import { TestBed, inject} from '@angular/core/testing'; import { LocalStorageService} from 'ngx-webstorage'; import { ThemeService } from './theme.service'; import { HttpTestingController, HttpClientTestingModule } from '@angular/common/http/testing';
const currentUser = require('../../../assets/data/currentUser.json'); describe('ThemeService', () => { let httpMock: HttpTestingController; let storage: LocalStorageService; beforeEach(() => { TestBed.configureTestingModule({ imports: [ HttpClientTestingModule, ], providers: [ LocalStorageService, ThemeService ] }); storage = TestBed.get(LocalStorageService); httpMock = TestBed.get(HttpTestingController); });
beforeEach(() => { storage.store('currentuser', currentUser); });
it('should be created', inject([ThemeService], (service: ThemeService) => { expect(service).toBeTruthy(); })); });`
To Reproduce Steps to reproduce the behavior:
- Write a test file 'using localStorageService'
- Run the tests
- See error
Expected behavior A clear and concise description of what you expected to happen.
Screenshots If applicable, add screenshots to help explain your problem.
Desktop (please complete the following information):
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
Additional context Add any other context about the problem here.
I'm running into the same issue. Is there a solution to this problem?
Any updates on this? Running into the issue with SessionStorageService
I was able to get around this by:
- creating a mock object that implements the StorageService interface.
- configuring my provider to use the mocked object. Definitely not an ideal long term solution, but it got the tests passing again.
// Mock LocalStorageService
const mockStore = {};
const localStorageMock: StorageService = {
store: (key: string, value: string) => {
mockStore[key] = ${value}
;
},
retrieve: (key: string): string => {
return key in mockStore ? mockStore[key] : null;
},
clear: (key: string) => {
delete mockStore[key];
},
getStrategyName(): string {
return 'Local';
},
observe(key: string): Observable
And then
beforeEach(() => { TestBed.configureTestingModule({ providers: [ {provide: LocalStorageService, useValue: localStorageMock} ], }); ....