Я относительно новичок в модульном тестировании. Я пишу небольшую библиотеку JavaScript, где я определил приоритет дружественного API, что приводит к некоторому перекрытию метода для удобства использования.Как я могу выполнить единый тестовый код с большим совпадением?
В качестве простого, гипотетического примера, рассмотрим следующее:
var BasicMath = function() {};
BasicMath.prototype.multiply = function(numA, numB) {
return numA * numB;
};
BasicMath.prototype.square = function(num) {
return this.multiply(num, num);
};
Как я должен модульного тестирования этого кода?
Отметьте, что .square()
- это просто удобный метод, который ничего не делает, а передает его аргумент дважды в .multiply()
.
Имея это в виду, я должен:
- написать аналогичные (или даже идентичных) модульных тестов для обоих методов?
- проверить, что
.square()
вызывает.multiply()
с определенными аргументами? (Я понимаю, что это плохая практика, так как она слишком сильно зависит от деталей реализации метода.) - не тест
.square()
вообще, так как он по существу избыточен до.multiply()
? - проверить только более общие аспекты
.square()
(например, тип аргумента, количество и т. Д.), Чтобы избежать избыточности с помощью.multiply()
?
Или, другой подход?
Обратите внимание, что приведенный выше код - это всего лишь надуманный пример. Я задаю более общий вопрос о том, как единичные методы тестирования с перекрывающимися/избыточными функциональными возможностями.