【发布时间】:2021-10-18 15:44:01
【问题描述】:
我有这个代码;
import { initRepo, getOrganisationsRepo } from "Repositories";
import logger from "Logger";
export const getOrganisations = async (event) => {
try {
await initRepo();
const repo = await getOrganisationsRepo();
const data = await repo.getOrganisations();
// 200: Response is an array & is not empty
if (Array.isArray(data) && data.length)
return { statusCode: 200, body: JSON.stringify(data) };
// 404: Response is an array and is empty
if (Array.isArray(data) && !data.length) return { statusCode: 404 };
return { statusCode: 400 };
} catch (error) {
const errorMessage = error?.message || "error fetching organisations";
logger.error({ event: "org_get_failed" }, errorMessage);
return { statusCode: 400, body: errorMessage };
}
};
我想用 jest 模拟以下调用,因为这是我不想在这里测试的数据库逻辑。
await initRepo();
const repo = await getOrganisationsRepo();
const data = await repo.getOrganisations();
我想模拟repo.getOrganisations();的返回值
我不太确定该怎么做。我可以模拟getOrganisationsRepo,但我不确定如何模拟repo.getOrganisations() 的返回值
这几乎是模拟所获得的,这些工作,我可以测试这两个函数是否被调用过一次,等等。
jest.mock("Repositories");
mockRepositories.initRepo.mockImplementation(() => Promise.resolve());
mockRepositories.getOrganisationsRepo.mockImplementation(() =>
Promise.resolve()
);
【问题讨论】:
标签: node.js unit-testing jestjs mocking