Как тестировать функцию которая возвращает число?
Есть такой метод в классе Scale
private getStepBetweenMarksInPx(
lastMarkValueElement: HTMLElement,
onePointInPx: number,
): number {
const lastMarkValueSize: number = getElementLengthInPx(this.settings!, lastMarkValueElement);
const lastMarkValueSizeInPoints: number = lastMarkValueSize / onePointInPx;
const stepBetweenMarksInPoints: number = this.roundValueTo(lastMarkValueSizeInPoints, 10);
return stepBetweenMarksInPoints * onePointInPx;
}
так как функция getElementLengthInPx вычисляет длину элемента с помощью getBoundingClientRect, то перед тестом в прототип элемента добавляю такой код
Element.prototype.getBoundingClientRect = jest.fn(() => ({
width: 300,
height: 10,
top: 100,
left: 100,
bottom: 110,
right: 400,
x: 100,
y: 100,
toJSON: () => {},
}));
Пишу для него тест
let settings: ISettings;
beforeEach(() => {
settings = {
min: 0,
max: 1500,
isTwoRunners: true,
isScaleVisible: true,
isVertical: true,
isTooltipsVisible: true,
valueFrom: 1000,
valueTo: 1490,
step: 10,
};
});
describe('private getStepBetweenMarksInPx', () => {
test('should return step between marks in px (number)', () => {
const scale = new Scale();
scale.settings = settings;
scale.settings.isVertical = false;
const lastMarkValueElement = scale.element.appendChild(scale['createMarkValue'](scale.settings.max, 500));
const result = scale['getStepBetweenMarksInPx'](lastMarkValueElement, 0.8);
expect(result).toBe(304);
});
});
так нужно это тестировать? в чем смысл такого теста?
очевидно же что подобный тест будет выглядеть примерно так
expect(2+2).toBe(4);
а не так
expect(2+2).toBe(5);
expect(2+2).toBe('строка');
типы же входных параметров функции прописаны. в каком случае функция может выдавать не верный результат?