Issues during testing
VamsiDevalla opened this issue · 3 comments
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 {
return EMPTY;
}
};
And then
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
{provide: LocalStorageService, useValue: localStorageMock}
],
}); ....