Есть непонимание процесса написания правильных тестов. Для примера возьмем два простых класса -
class List {
constructor(){
this.itemAll = [];
}
insertItem(item){
this.itemAll.push(item);
}
hasItem(item){
return this.itemAll.indesOf(item) > -1;
}
}
class Factory {
constructor(){
this.list = new List();
}
insertProduct(product){
if( ! this.list.hasItem(product)){
this.list.inserItem(product);
}
}
}
И вот я значит написал тест для LIst, где при добавлении мониторил длину массива, чтобы удостоверится что элемент туда добавился и так далее. Но пришло время написать тест для Factory и у меня мысли разбежались в разные стороны. То есть вот в чем дело. Добавил я продукт и что мне мониторить? Хорошо если у List будет длина, а если этот класс, который не предоставляет данные о внутренних объектах? А нужно ли мне писать тесты и для вызовов объектов находящихся в композиции? то есть вот я вызвал insertProduct, а дальше должен узнать, а был ли вызван hasItem и что в него передано и что возвращено?
Но если это так, то мне придется увеличивать сложность тестов и писать одно и тоже в геометрической прогрессии. Или же не нужно проверять внутреннею работу других объектов?
Расскажите как правильно, а то очень сложно самому догадаться.