我想在调用异步函数的组件中测试一个函数。我想测试一个函数是否在另一个函数之后被调用。
我曾尝试toHaveBeenCalledBefore,然后等待(按承诺),但没有成功。我的组件功能代码如下:
public async onModalExecute() {
const center = this.service.graph.getCenter();
this.service.graph.fitPage();
this.service.graph.screenshot().then(() => {
this.service.graph.setCenter(center);
});
}
在我的spec.ts文件中,我有以下代码:
const setCenterSpy = spyOn(service.graph, 'setCenter');
const getCenterSpy = spyOn(service.graph, 'getCenter').and.returnValue({ x: 0, y: 0 });
component.onModalExecute();
expect(getCenterSpy).toHaveBeenCalledBefore(setCenterSpy);
它应该能正常工作,但是我得到了被期望的间谍setCenter。它仅在使用setTimeOut时有效。什么是正确的解决方案?是setTimeOut唯一的解决方案吗?