Пишу сайт. Типичный интернет магазин. Добавление товара, мини корзина и корзина. Без каких-либо fraimwork'ов. Тупо нативный. Всё в одном файлике. Вообщем как настоящий тру разраб XD. В определенный момент всё работает, но клиент хочет немного расширить и изменить функционал. Дописываю пару функция и... ничего не работает. Ну тоесть часть работает, часть работает, часть работает не так или не там. До этого тесты не писали и как вообще пишутся не представляю. И мне говорят - надо было писать тесты на свой JS что бы смотреть что работает, а что нет. И вот вопрос - как это можно сделать уже на работающем сайте? Все файлы на серве, БД там же. Смотрел - надо было писать с одной из методологий BDD или TDD. И пользоваться различными fraimwork'ами для этого. mocha для описания, jusmine или chai для тестов, karma для запуска тестов в консоли. Хорошо, но как всё это прикрепить к сайту и моим функциям? Есть класс, он инициализируется если например есть определенный класс на странице.
function Class(){
tihs._data = {
text: 'Нажал'
}
this.init();
}
Class.prototype.init = function(){
var btns = document.querySelectorAll('.btns');
if(!!btns.length){
for(var i = 0; i < btns.length; i++){
btns[i].onclick = this.btn_click();
}
}
}
Class.prototype.btn_click = function(){
return function(ev){
console.info(this._data.text);
}.bind(this)
}
Это примерный код, какой я пишу для своих целей. Он бывает наследуется, бывает расширяется. Но всё это так или иначе взаимодействует с DOM. И как это тестировать? Да еще и если сайт уже выложен?
Обобщая:
1) Можно ли проводить тесты с таким кодом, который написан в одном файле и близко взаимодействие с DOM?
2) Если нет, то нужно ли всё это переписать в модули? Где-то читал, что не плохо использовать модульный подход с помощью, например, require.js. Я им пользовался, интересная штука.
3) Если нельзя такое как у меня тестировать, то как нужно мне писать мою логику сайта, что бы была возможность тестировать?