在 Sinon 中,无法成功 stub/mock 一个方法 return
In Sinon, could not succeed stub/mock a method return
我一直在挣扎。我没有正确的 nodejs 学习路径或高级 javascript 功能。我仍在为此努力。
其余端点之一使用此(Azure Blob 存储)方法(容器客户端)并将结果转换为另一种形式。
使用 sinon 编写测试时,有一点,我必须 stub/mock/fake 这个方法及其 return 值。在我的休息端点,我正在迭代并获取 Blobitem 对象。
listBlobsByHierarchy(string, ContainerListBlobsOptions)
这个方法returns
PagedAsyncIterableIterator<({ kind: "prefix"; } & BlobPrefix) | ({ kind: "blob"; } & BlobItem), ContainerListBlobHierarchySegmentResponse>
我该怎么做?
如果我模拟这个方法,所以它 return,那我会怎么做。
这是参考link
ContainerClient.listBlobsByHierarchy
起初,我使用类型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 类型比将其转换为 unknown
更糟糕
const obj = [ {...} ] as unknown as PagedAsyncIterableIterator<
({ kind: 'prefix' } & BlobPrefix) | ({ kind: 'blob' } & BlobItem),
ContainerListBlobHierarchySegmentResponse
>;
containerStub.listBlobsByHierarchy.returns(obj);
作为这种类型脚本的新手/java 脚本,来自常规 Java 世界,具有挑战性。
我一直在挣扎。我没有正确的 nodejs 学习路径或高级 javascript 功能。我仍在为此努力。 其余端点之一使用此(Azure Blob 存储)方法(容器客户端)并将结果转换为另一种形式。 使用 sinon 编写测试时,有一点,我必须 stub/mock/fake 这个方法及其 return 值。在我的休息端点,我正在迭代并获取 Blobitem 对象。
listBlobsByHierarchy(string, ContainerListBlobsOptions)
这个方法returns
PagedAsyncIterableIterator<({ kind: "prefix"; } & BlobPrefix) | ({ kind: "blob"; } & BlobItem), ContainerListBlobHierarchySegmentResponse>
我该怎么做? 如果我模拟这个方法,所以它 return,那我会怎么做。
这是参考link ContainerClient.listBlobsByHierarchy
起初,我使用类型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 类型比将其转换为 unknown
更糟糕const obj = [ {...} ] as unknown as PagedAsyncIterableIterator<
({ kind: 'prefix' } & BlobPrefix) | ({ kind: 'blob' } & BlobItem),
ContainerListBlobHierarchySegmentResponse
>;
containerStub.listBlobsByHierarchy.returns(obj);
作为这种类型脚本的新手/java 脚本,来自常规 Java 世界,具有挑战性。