【发布时间】:2019-10-02 20:30:19
【问题描述】:
我有这个功能
public pick(config?: FilePickerConfig): Promise<FilePickerResult> {
return new Promise<FilePickerResult>(resolve => {
this.pickWithCallbacks(resolve, resolve, config);
});
}
我想测试对this.pickWithCallbacks 的调用是否将函数的resolve 参数作为第一个和第二个参数。
有没有办法在玩笑或茉莉花中做到这一点?我试图监视window, 'Promise',但它不起作用。
编辑:这不是Spying on a constructor using Jasmine 的贬义,因为这是我尝试过但没有奏效的方法。
我试过这个:
const dummyResolve = () => { };
const promiseSpy = spyOn(window, 'Promise').and.callFake((dummyResolve)=>{});
const pickWithCallbacksSpy = spyOn(sut, 'pickWithCallbacks');
sut.pick();
expect(pickWithCallbacksSpy).toHaveBeenCalledWith(dummyResolve, dummyResolve, undefined);
【问题讨论】:
-
你能添加你尝试过的代码吗?
-
@JonathanLarouche 我会看看我的 ctrl-z 历史中是否有它。我正在尝试很多事情。
-
你能用 jest.fn() 监视函数
pickWithCallbacks吗?例如:用obj.pickWithCallbacks = jest.fn();模拟方法,然后调用pick 方法obj.pick(config);并在验证结果后expect(obj.pickWithCallbacks).toHaveBeenCalledWith(valueForResolve, valueForResolve, valueForConfig); -
@JonathanLarouche 我尝试过类似的方法。我已经更新了我的问题