Я использую шаблон модуля в 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(), я бы хотел, чтобы этот тест завершился неудачей, а не тест для функции public draw(). Я нахожусь на неправильном пути здесь?
Я мог бы разделить каждый из компонентов в разных классах, например, создать класс Legend. Но кажется глупым создать класс для того, что иногда составляет всего 5-10 строк кода, и это было бы ужасно, потому что мне нужно было бы передать кучу частного состояния. И я не смог бы проверить свои вспомогательные функции. Должен ли я это делать? Должен ли я сосать его и проверять только общественность()? Или есть другое решение?