在Sinon中,无法成功返回stub/mock方法



我一直在挣扎。我没有一个正确的学习路径来学习nodejs或高级javascript功能。我仍在为此努力。其中一个rest端点使用(containerclient的(this(azure blob存储(方法,并将结果转换为另一种形式。当使用sinon编写测试时,有一点是,我必须stub/mock/fake这个方法及其返回值。在我的rest端点中,我正在遍历并获取Blobitem对象。

listBlobsByHierarchy(string, ContainerListBlobsOptions)

该方法返回

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

我该怎么做?如果我嘲笑这个方法,以及它的返回,那么我该怎么做呢?

这是参考链接ContainerClient.listBlob(按层次结构(

起初,我使用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);

上面的代码显示了这个想法。还有另一个";据说是优选的";方式-将其强制转换为未知,然后强制转换为真实类型。看起来任何类型的使用都比将其强制转换为未知更糟糕

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

作为一名来自常规java世界的此类类型脚本/java脚本的新手,这是一项具有挑战性的工作。

最新更新