Недавно я пытался научиться юнит-тестированию с Jest, читая документы и различные статьи.
Одна вещь, которую я не смог выяснить, это следующее:
Iя пытаюсь протестировать модуль nodeJS с условным оператором if
на os.platform()
.
Можно ли в моем тесте установить / смоделировать возвращаемое значение os.platform
для чего-то другого, поэтому, когдаJest запускает тестовый файл, тестовый файл будет читать значение os.platform (), указанное в наборе тестов?
PS: foo()
не может принять платформу через внедрение зависимостей.Реализация foo()
исправлена.
myModule.js
import os from 'os';
export const foo = () => {
if (os.platform() === `win32`) {
module = module.split(`\\`).join(`\\\\`);
}
}
myModule.test.js
import * as myModule from '../myModule.js';
// Guessing I need to use spyOn, to test the actual module code?
const myModuleMock = jest.spyOn(myModule, 'foo');
describe('myModule', () => {
it('can run with different os.platform() values', () => {
myModuleMock();
expect(myModuleMock).toHaveBeenCalled();
// How do I specify what value os.platform() in foo() should return?
});
});