В соответствии с моими комментариями я бы написал следующую функцию:
function isUndefined(value) {
return typeof value === 'undefined';
}
function isDefined(value) {
return !isUndefined(value);
}
Я оставлю вам перевод на es6.
С точки зрения вашего первоначального вопроса о наборе определенных значений, вы правы в том, что вы предложили при тестировании 1, и не беспокоитесь об остальной части набора целых чисел.
В TDD это обычно называется разделом эквивалентности. Вы действительно хотите проверить границы эквивалентных разделов, так как именно здесь ошибка проявляется. Еще одним хорошим тестом, по крайней мере, для чисел, будет -1, так как он находится на другой стороне границы 0.
С точки зрения ваших тестов вы должны действительно попытаться убедиться, что у вас есть одно утверждение для каждого теста или, по крайней мере, одно логическое утверждение, т.е. все ожидаемые операторы тестируют ожидаемое состояние после вызова тестируемого метода. В ваших тестах я вижу, что вы проверяете некоторые правдивые и ложные вещи в каждом тесте. Ваши имена тестов могут быть более четкими, и тест может быть лучшим примером намерения, заданного вашими именами тестов. Другие вещи для проверки на isDefined были бы такими как массив, строка, свойство объекта. Я не могу думать ни о чем другом прямо над головой.