В моих модульных тестах (написанных на Typescript, запущенных Jest) я хочу смоделировать два класса, которые имеют общую функциональность. Например, у них обоих есть методы tick()
и getTicks()
. Мой Jest в настоящее время копирует код для выполнения sh этого, например, так:
const mock1 = jest.fn(() => {
let ticks = 0;
return {
tick: jest.fn(() => {ticks++; }),
getTicks: jest.fn(() => ticks),
doSomething: jest.fn()
}
});
const mock2 = jest.fn(() => {
let ticks = 0;
return {
tick: jest.fn(() => {ticks++; }),
getTicks: jest.fn(() => ticks),
doAnotherThing: jest.fn()
}
});
Теперь я могу сделать:
const mock1Instance = new mock1();
const mock2Instance = new mock2();
mock1Instance.tick();
mock2Instance.getTicks();
Но дублирование кажется глупым. Есть ли способ для меня объявить базовый макет, и просто расширить его, как:
const baseMock = jest.fn(() => {
let ticks = 0;
return {
tick: jest.fn(() => {ticks++; }),
getTicks: jest.fn(() => ticks),
}
});