С jest
Я не могу проверить commander
функции модуля, которые приводят к завершению процесса.
Например, если я передам опцию --help
или недопустимый параметр, такой как -x
(см. ниже) process.exit
или process.stdout.write
не вызываются так, как они должны смотреть на источники commander
.
import {Command} from "commander";
let mockExit: jest.SpyInstance;
let mockStdout: jest.SpyInstance;
beforeAll(() => {
mockExit = jest.spyOn(process, "exit").mockImplementation();
mockStdout = jest.spyOn(process.stdout, "write").mockImplementation();
});
afterAll(() => {
mockExit.mockRestore();
mockStdout.mockRestore();
});
test("Ask for help", () => {
// Setup
const save = JSON.parse(JSON.stringify(process.argv));
process.argv = ["--help"]; // Same setting it to "-x"
const program = new Command();
program
.option("-v, --verbose [level]", "verbose level")
.parse(process.argv);
expect(mockExit).toBeCalled();
// expect(mockStdout).toBeCalled();
// Cleanup
process.argv = save;
});
Что странно в том, что из поведения других тестов process.argv
не восстановлен после этого. Тесты в машинописи и прошли через ts-jest
. Любые идеи? Спасибо!