首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法监视Promise构造器?

有没有办法监视Promise构造器?
EN

Stack Overflow用户
提问于 2019-10-02 19:33:42
回答 1查看 165关注 0票数 0

我有这个功能

代码语言:javascript
复制
public pick(config?: FilePickerConfig): Promise<FilePickerResult> {
    return new Promise<FilePickerResult>(resolve => {
      this.pickWithCallbacks(resolve, resolve, config);
    });
  }

我想测试对this.pickWithCallbacks的调用是否将函数的resolve参数作为第一个和第二个参数。

有没有办法用jest或jasmine来做到这一点呢?我曾试图监视window, 'Promise',但没有起作用。

编辑:这不是Spying on a constructor using Jasmine的解体,因为这是我尝试过的,但没有起作用。

我已经尝试过了:

代码语言:javascript
复制
      const dummyResolve = () => { };
      const promiseSpy = spyOn(window, 'Promise').and.callFake((dummyResolve)=>{});
      const pickWithCallbacksSpy = spyOn(sut, 'pickWithCallbacks');
      sut.pick();

      expect(pickWithCallbacksSpy).toHaveBeenCalledWith(dummyResolve, dummyResolve, undefined);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-02 20:09:18

所以最后我只留下了Promise,做他的事情,我捕获了resolve回调

代码语言:javascript
复制
    test('on success should call pickWithCallbacks with the resolve function of a promise', (done) => {
      const cordovaExecSpy = spyOn(sut, 'pickWithCallbacks');
      const dummyReturn = {};
      sut.pick().then(obtained => {
        expect(obtained).toBe(dummyReturn);
        done();
      });

      const capturedOnSucess = cordovaExecSpy.calls.mostRecent().args[0];
      capturedOnSucess(dummyReturn);
    });

    test('on Error should call pickWithCallbacks with the resolve function of a promise', (done) => {
      const cordovaExecSpy = spyOn(sut, 'pickWithCallbacks');
      const dummyReturn = {};
      sut.pick().then(obtained => {
        expect(obtained).toBe(dummyReturn);
        done();
      });

      const capturedOnError = cordovaExecSpy.calls.mostRecent().args[1];
      capturedOnError(dummyReturn);
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58200661

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档