У меня есть служба, которая действует как хранилище данных. В своем конструкторе он пытается «увлажнить» набор данных из хранилища устройства (используя Ionic и его службу Storage
):
@Injectable()
export class SimpleDataStore {
private _data: BehaviorSubject<any> = new BehaviorSubject<any>(undefined);
public data: Observable<any> = this._data.asObservable();
constructor(private _http: HttpClient, private _storage) {
this.initializeData();
}
private initializeData(): void {
this._storage.get("dataKey")
.then(data => this._data.next(data))
.catch(() => this._data.next([]);
}
}
Я знаю, как писать асинхронные тесты с помощью Jasmine и как получить доступ к закрытым членам/методам, а также знаю, что нужно проверять _data.getValue()
для получения желаемого результата, но моя проблема заключается в том, что я не знаю, как тестировать:
- Конструктор и/или;
initializeData
, чтобы дождаться завершения промиса, так как в методе не возвращается промис.
Спасибо за любую помощь!
_storage
, которой можете управлять при разрешенииthis._storage.get("dataKey")
, пробовали ли вы это делать? - person Jake Holzinger   schedule 17.01.2019spyOn(TestBed.get(Storage), 'get').and.returnValue(Promise.resolve(localStorage));
. Но без установки тестового метода какasync
- чего я не могу сделать, потому что обещания не возвращаются, я немного потерян. - person EHorodyski   schedule 17.01.2019