typescript - 在 Sinon 中,无法成功 stub/mock 方法返回
问题描述
我一直在挣扎。我没有正确的 nodejs 或高级 javascript 功能的学习路径。我仍在朝着这个方向努力。其余端点之一使用此(azure blob 存储)方法(容器客户端)并将结果转换为另一种形式。在使用 sinon 编写测试时,有一点,我必须 stub/mock/fake 这个方法及其返回值。在我的休息端点中,我正在迭代并获取 Blobitem 对象。
listBlobsByHierarchy(string, ContainerListBlobsOptions)
这个方法返回
PagedAsyncIterableIterator<({ kind: "prefix"; } & BlobPrefix) | ({ kind: "blob"; } & BlobItem), ContainerListBlobHierarchySegmentResponse>
我该怎么办?如果我嘲笑这个方法,所以它的回报,那我该怎么办。
解决方案
起初,我使用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);
上面的代码有点显示了这个想法。还有另一种“据称首选”的方式 - 将其转换为未知类型,然后将其转换为真实类型。看起来任何类型的使用都比将其转换为未知类型更糟糕
const obj = [ {...} ] as unknown as PagedAsyncIterableIterator<
({ kind: 'prefix' } & BlobPrefix) | ({ kind: 'blob' } & BlobItem),
ContainerListBlobHierarchySegmentResponse
>;
containerStub.listBlobsByHierarchy.returns(obj);
作为这种类型脚本/java脚本的新手,来自普通的Java世界,这是具有挑战性的。
推荐阅读
- python - 精确覆盖问题,但对解决方案中子集的精确数量有限制
- python - 关于 __new__() 在 python 中初始化对象
- python - Pyinstaller:在 Windows 上的 python 2.7 上设置无缓冲的 stdio
- reactjs - 无效的挂钩调用。钩子只能在函数组件的主体内部调用。在 shopify 北极星
- matlab - 在matlab中集成一个调用另一个函数的函数
- java - 使用解析文本文件将字符映射到元素或绘制块
- reactjs - useTransition 立即挂载新对象
- c# - 将文本框中的数据保存到本地文件中
- curl - 执行已保存的 graphDB SPARQL 查询
- php - 自 2020-06 新版本以来的 Eclipse PHP 垃圾邮件新警告