【问题标题】:In Sinon, could not succeed stub/mock a method return在 Sinon 中,无法成功 stub/mock 方法返回
【发布时间】:2021-09-19 21:50:17
【问题描述】:

我一直在挣扎。我没有正确的 nodejs 或高级 javascript 功能的学习路径。我仍在朝着这个方向努力。 其余端点之一使用此(azure blob 存储)方法(容器客户端)并将结果转换为另一种形式。 在使用 sinon 编写测试时,有一点,我必须 stub/mock/fake 这个方法及其返回值。在我的休息端点中,我正在迭代并获取 Blobitem 对象。

listBlobsByHierarchy(string, ContainerListBlobsOptions)

这个方法返回

PagedAsyncIterableIterator<({ kind: "prefix"; } & BlobPrefix) | ({ kind: "blob"; } & BlobItem), ContainerListBlobHierarchySegmentResponse>

我该怎么办? 如果我模拟这个方法,所以它的返回,那我该怎么办。

这是参考链接 ContainerClient.listBlobsByHierarchy

【问题讨论】:

    标签: typescript azure-blob-storage sinon


    【解决方案1】:

    起初,我使用 any 类型来绕过这个问题。由于我的代码需要一个可迭代的对象,所以我采用这种方式... 了解类型 any

    的好方法
    const obj: any = [ {...} ];
    containerStub.listBlobsByHierarchy.returns(obj);
    const actualResponse = await (await client.get('ENDPOINT')).body;
    const expectedobj: any = [ {...} ]; // whatever the method will return
    expect(actualResponse).deepEqual(expectedobj);
    

    上面的代码显示了这个想法。 还有另一种“据称首选”的方式 - 将其转换为 unknown 然后将其转换为真实类型。看起来 any 类型的用法比将其转换为未知类型更糟糕

    const obj = [ {...} ] as unknown as PagedAsyncIterableIterator<
                    ({ kind: 'prefix' } & BlobPrefix) | ({ kind: 'blob' } & BlobItem),
                    ContainerListBlobHierarchySegmentResponse
                >;
    containerStub.listBlobsByHierarchy.returns(obj);
    

    作为这种类型脚本/java脚本的新手,来自普通的Java世界,很有挑战性。

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 2019-01-11
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      相关资源
      最近更新 更多