【发布时间】:2019-06-11 02:56:52
【问题描述】:
我有一个充当数据存储的服务。在它的构造函数中,它尝试从设备的存储中“水合”数据集(使用 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以便它等待 Promise 完成,因为该方法中没有返回 Promise。
感谢您的帮助!
【问题讨论】:
-
如果您模拟
_storage实现,您可以控制this._storage.get("dataKey")何时解析,您是否尝试过这样做? -
我有——就像
spyOn(TestBed.get(Storage), 'get').and.returnValue(Promise.resolve(localStorage));。但是如果没有将测试方法设置为async- 我真的不能,因为没有返回任何承诺,我有点迷路了。
标签: angular jasmine angular-test