Как написать функцию, которая должна как возвращать значение при вызове, так и иметь метод, который можно вызвать через dot-нотацию
Задача - написать функцию baseExpect которая будет сравнивать эквивалентность двух чисел. Но должна быть описана через dot-нотацию.
Тесты для этой задачи выглядят так:
base-expect
should exist
baseExpect should exist
baseExpect should be function
baseExpect().toBe.not should exist
baseExpect().toBe.not should be function
should work correct
baseExpect(4).toBe(4) === true
baseExpect(4).toBe(5) === false
baseExpect(4).toBe.not(5) === true
baseExpect(4).toBe.not(4) === false
Никак не могу понять, как сделать так, чтобы toBe было и функцией, которую можно вызвать, и имело метод not, который тоже можно было бы вызвать.
Ответы (1 шт):
Автор решения: Ytar99
→ Ссылка
Решение оказалось таким:
function baseExpect(num) {
if (!typeof num === 'number') {
throw new Error('Wrong type of arguments');
}
const toBe = (equal) => num === equal;
toBe.not = (notEqual) => num !== notEqual;
return { toBe };
}
Все тесты проходят успешно.