У меня есть функция, которая получает версию пакета 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 (), но безрезультатно. Кто-нибудь знает, как go о проверке неопределенного возврата?