【发布时间】:2020-01-10 14:54:14
【问题描述】:
我有一个获取 npm 包版本的函数。该函数以这种方式分为三个:
**version.ts**
import fs from "fs";
import path from "path";
const getPathToPackageJson = (): string =>
path.resolve(__dirname, "../", "../", "../", "../", "package.json");
const getPackageJson = (path: string): object =>
fs.existsSync(path)
? JSON.parse(fs.readFileSync(path, { encoding: "utf8" }))
: undefined;
const getPackageJsonVersion = (): string =>
getPackageJson(getPathToPackageJson())["version"] || undefined;
export const versionUtils = {
getPackageJsonVersion,
getPathToPackageJson,
getPackageJson
};
我想测试未定义的分支。现在我的测试看起来像这样:
**version.spec.ts**
import { versionUtils } from "./version.utils";
jest.mock("../../../../package.json", () => {
return {
version: "1.0.0"
};
});
describe("getting the package.json version", () => {
test("return 1.0.0", () => {
expect(versionUtils.getPackageJsonVersion()).toEqual("1.0.0");
});
});
所以,这部分有效,但我缺少未定义的分支以获得 100% 的覆盖率。这里的问题不是我是否真的需要它,而是我是否想要它。我愿意。
我用 jest.fn()、jest.spyOn()、jest.mock() 和 jest.clearAllMocks() 尝试了几种方法,但无济于事。有谁知道如何去测试未定义的回报?
【问题讨论】:
标签: jestjs