
[英]Ionic / Angular 5 - Storage get in external function
[英]Ionic/Angular testing: this.storage.ready is not a function
我正在尝试为我的 Angular 单元测试模拟 Ionic 的存储提供程序,但我被卡住了。 这是我的模拟:
export class StorageMock {
driver: string;
vals: {};
constructor() {
// super({})
}
clear() {
return new Promise<void>((res) => res())
}
ready() {
return new Promise<LocalForage>((res) => res())
}
get(key: string) {
return new Promise((res) => res(this.vals[key]))
}
set(key, val) {
return new Promise((res) => {
this.vals[key] = val;
res()
})
}
remove(key) {
return new Promise((res) => {
delete this.vals[key];
res()
})
}
}
我的测试是这样设置的:
describe('ReEvaluationComponent', () => {
let component: ReEvaluationComponent;
let fixture: ComponentFixture<ReEvaluationComponent>;
let mockGlobalsService = jasmine.createSpyObj('GlobalsService', ['base_url'])
let checkInsService: any;
let injector: TestBed;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ ReEvaluationComponent ],
imports: [
IonicModule.forRoot(),
HttpClientTestingModule,
RouterTestingModule,
],
providers: [
CheckInsProvider,
WeighInsProvider,
PurchasesService,
TransactionsProvider,
{provide: Storage, useValue: StorageMock},
{provide: GlobalsService, useValue: mockGlobalsService}
]
}).compileComponents();
fixture = TestBed.createComponent(ReEvaluationComponent);
component = fixture.componentInstance;
fixture.detectChanges();
}));
...
我认为这一行: {provide: Storage, useValue: StorageMock}
可以解决这个问题,但我仍然收到错误消息:
Failed: this.storage.ready is not a function
我错过了什么?
请检查您是否正在导入相应的Storage
并在构造函数中声明它。 因此,在检查之后,您可以像这样使用:
import { Storage } from '@ionic/storage-angular';
constructor(private storage: Storage) {
}
this.storage.ready();
他们用 create() 替换了 ready(),但在使用之前请阅读 v3 公告https://ionicframework.com/blog/annoucing-ionic-storage-v3/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.