我正在使用localforage将会话存储在客户端。我正在尝试为我的角度服务的方法编写单元测试用例,我该如何存根或模拟localforage。请帮忙。
我
import { Injectable } from ‘@angular/core’;
@Injectable()
export class TokenService {
private TOKEN_KEY = ‘id_token’;
constructor() { }
setAccessToken(token: string) {
localForage.setItem(this.TOKEN_KEY, token);
}
getAccessToken(): string {
return localForage.getItem(this.TOKEN_KEY);
}
}
我正在寻找一种不调用实际的localforage方法的方法,因为我的目的不是测试该库。工作很受赞赏。
答案 0 :(得分:0)
您可以将测试模块配置为在组件要求TockenService
时注入间谍对象。
这可以通过在提供商定义useValue
中使用[{ provide: TockenService, useValue: mockTokenService }]
属性定义服务来完成。
describe('YourComponent', () => {
let component: YourComponent;
let fixture: ComponentFixture<YourComponent>;
let mockTokenService;
beforeEach(async(() => {
mockTokenService = jasmine.createSpyObj(['setAccessToken', 'getAccessToken']);
TestBed.configureTestingModule({
declarations: [YourComponent],
imports: [],
providers: [{ provide: TockenService, useValue: mockTokenService }]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(YourComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
mockTokenService.getAccessToken.and.returnValue('YOURTOKENSTRING');
expect(component).toBeTruthy();
});
});