Я использую шаблон модуля в Javascript, чтобы отделить мой открытый интерфейс от частной реализации. Чтобы упростить то, что я делаю, мой код генерирует диаграмму. Диаграмма состоит из нескольких частей (оси, метки, сюжет, легенда и т. Д.). Мой код выглядит так:
var Graph = function() {
var private_data;
function draw_legend() { ... }
function draw_plot() { ... }
function helper_func() { ... }
...
return {
add_data: function(data) {
private_data = data;
},
draw: function() {
draw_legend()
draw_plot()
}
}
}
Некоторые люди рекомендуют только тестировать открытый интерфейс ваших классов, что имеет смысл, но я бы очень хотел пройти несколько тестов, чтобы протестировать каждый из компонентов в отдельности. Если я испорчу свою функцию draw_legend (), я бы хотел, чтобы этот тест провалился, а не тест для публичной функции draw (). Я здесь не на том пути?
Я мог бы разделить каждый из компонентов на разные классы, например, сделать класс Legend. Но кажется глупым создавать класс для того, что иногда составляет всего 5-10 строк кода, и это было бы уродливее, потому что мне нужно было бы передать кучу приватных состояний. И я не смог бы проверить свои вспомогательные функции. Должен ли я сделать это в любом случае? Должен ли я смириться с этим и протестировать только публичную ничью ()? Или есть какое-то другое решение?