Я использовал localalstorage в моем приложении. основываясь на комментариях моего рецензента, вместо непосредственного использования localalstorage я создал ссылку на localalstorage и использовал ее в своем приложении. Это работает хорошо. но не мог (не знаю, как) издеваться над местным хранилищем, на которое ссылаются.
Вот мой код:
местные-хранения-ref.service.ts:
@Injectable()
export class LocalStorageRef {
public getLocalStorage(): Storage {
return localStorage;
}
}
app.component.ts:
import { LocalStorageRef } from './shared/local-storage-ref.service';
...
export class AppComponent implements OnInit {
...
constructor(public ref: LocaStorageRef){
}
...
someFunction(){
...
this.ref.localStorageRef.getLocalStorage().setItem('somekey','sometext');
...
val = this.ref.localStorageRef.getLocalStorage().setItem('somekey');
...
}
}
Spec.ts:
import { LocalStorageRef } from './shared/local-storage-ref.service';
...
describe('#AppComponent', () => {
...
let mockLocalStorageRef: jasmine.SpyObj<LocalStorageRef>;
...
beforeEach(async(() => {
...
mockLocalStorageRef = jasmine.createSpyObj('LocalStorageRef', ['getLocalStorage']);
mockLocalStorageRef.getLocalStorage.and.callThrough();
...
}
it(){
...
}
}
Когда я запускаю контрольный пример. Я получаю сообщение об ошибке типа
TypeError: Cannot read property 'getItem' of undefined
Я знаю, что я издевался над getLocalStorage()
, но я не знаю, как издеваться над setItem and getItem
, который находится внутри getLocalStorage()
. Любые выводы будут полезны. Спасибо.