#angular #ionic-framework #karma-jasmine
Вопрос:
Я пытаюсь издеваться над поставщиком хранилища Ionic для своих модульных тестов Angular, но я застрял. Вот моя шутка:
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
Что я упускаю?
Ответ №1:
Пожалуйста, проверьте, производите ли вы соответствующий импорт Storage
и объявляете ли его в конструкторе. Итак, после проверки вы можете использовать его следующим образом:
import { Storage } from '@ionic/storage-angular';
constructor(private storage: Storage) {
}
this.storage.ready();
Ответ №2:
Они заменяют ready()
на create()
.
Ссылка: