Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jest中模拟listBlobsByHierarchy方法?_Javascript_Typescript_Unit Testing_Jestjs_Azure Storage Blobs - Fatal编程技术网

Javascript 如何在jest中模拟listBlobsByHierarchy方法?

Javascript 如何在jest中模拟listBlobsByHierarchy方法?,javascript,typescript,unit-testing,jestjs,azure-storage-blobs,Javascript,Typescript,Unit Testing,Jestjs,Azure Storage Blobs,我正在为一个函数编写单元测试,该函数将遍历存储容器中的blob。我目前在使用jest和jest mock extended模拟listBlobsByHierarchy方法时遇到问题。有没有关于如何做到这一点的代码示例?我的实现尚未完成,但我希望的行为是模拟listBlobsByHierarchy的实现以返回预期的BlobItem。我试图返回模拟的ContainerListBlobHierarchySegmentResponse,但我不确定如何将预期的blobItem附加到此响应,也不确定如何正确

我正在为一个函数编写单元测试,该函数将遍历存储容器中的blob。我目前在使用jest和jest mock extended模拟listBlobsByHierarchy方法时遇到问题。有没有关于如何做到这一点的代码示例?我的实现尚未完成,但我希望的行为是模拟listBlobsByHierarchy的实现以返回预期的BlobItem。我试图返回模拟的ContainerListBlobHierarchySegmentResponse,但我不确定如何将预期的blobItem附加到此响应,也不确定如何正确模拟该响应

这是我到目前为止所拥有的

我正在测试的方法:

import { AzureFunction, Context, HttpRequest } from "@azure/functions";
import { ContainerListBlobsOptions } from "@azure/storage-blob";
import { getStorageContainerClient } from "../blobStorage/BlobStorage";
import { ImageInfo } from "../common/types";
import { handleError } from "../cosmos/CosmosContext";

const httpTrigger: AzureFunction = async function (context: Context, req: HttpRequest): Promise<void> 
{
    try
    {
        const containerClient = await getStorageContainerClient();
        if(req.method === "GET")
        {
            const imageinfo: ImageInfo[] = [];
            const containerListBlobsOptions: ContainerListBlobsOptions = 
            {
                includeDeleted: true,
                includeMetadata: true
            };
            for await (const item of containerClient.listBlobsByHierarchy("/", containerListBlobsOptions))
            {
                if (item.kind === "prefix")
                {
                    context.log("Prefix type:");
                    context.log(item.name);
                }
                else
                {
                    context.log(item.name);
                    context.log(item.deleted);
                    context.log(item.properties);
                }
                
            }
            // Get a block blob client
            // const blockBlobClient = containerClient.getBlockBlobClient(tenantBlobName);
            // const properties = await blockBlobClient.getProperties();
            context.res = { status: 200 };
            // context.res = { status: 200, body: JSON.stringify(properties)};
            return;
        }
    }
    catch(err)
    {
        handleError(context, err);
    }
};

export default httpTrigger;
正在给出以下错误: “()=>ContainerListBlobHierarchySegmentResponse”类型的参数不能分配给“never”类型的参数。

我试过:

// Gives the same error as above
listBlobsByHierarchySpy.mockResolvedValue(async() => listBlobsByHierarchyResponse);

// Says that it is missing a bunch of properties which make it hard to mock
listBlobsByHierarchySpy.mockImplementation(async() => listBlobsByHierarchyResponse);
任何帮助都将不胜感激

listBlobsByHierarchySpy.mockResolvedValue(() => listBlobsByHierarchyResponse);
// Gives the same error as above
listBlobsByHierarchySpy.mockResolvedValue(async() => listBlobsByHierarchyResponse);

// Says that it is missing a bunch of properties which make it hard to mock
listBlobsByHierarchySpy.mockImplementation(async() => listBlobsByHierarchyResponse);