首页 > 解决方案 > 笑话:测试异步函数

问题描述

我正在尝试使用 Jest 测试异步函数,但我的模拟似乎不想解决 Promise。

工作流.test.js

jest.mock("../../test/__mocks__/workflow");
import {list} from "../../test/__mocks__/workflow"

describe("workflow list api function", () => {
    it("should get a list of workflows", async () => {
        const expectedListData = {
            message: "Successfully retrieved workflow list!",
            data: [
                {
                    id: "123",
                },
            ]
        };
        const listData = await list();

        expect(listData.message).not.toBeNull();
        expect(listData.message).toBe(expectedListData.message);
        expect(listData.data).toBe(expectedListData.data)
    });
});

模拟/工作流

import { listData } from "./data";

export const list = () => {
    return new Promise((resolve, reject) => {
        const data = listData;

        if (data) {
            resolve(data)
        } else {
            reject({
                error: "List not found..."
            })
        }
    });
};

我不断收到一条错误消息,说“listData.message 未定义”,当我记录“listData”变量时,它也未定义,即使我的“workflow.test.js”文件中的 Promise 应该解析数据列表。

这是我第一次尝试运行一些测试,我只是不确定我做错了什么。我已经看了很多地方试图让这个工作,但我尝试过的一切都没有奏效。只是希望得到一些指示,因为我不确定此时还可以尝试什么。

标签: reactjsmockingjestjs

解决方案


推荐阅读