Обратите внимание, что вы делаете здесь:
renault.speedUp();
assertEquals(25,renault.currentSpeed());
Что происходит, когда вы звоните speedUp()
?Это делает:
TransmissionBox fasterCar = new TransmissionBox(speed+2, threesholdOne, threesholdTwo, threesholdThree, threesholdFour, threesholdFive);
return fasterCar;
Существующий объект *1008* не изменяется, и возвращается новый объект.По сути, нынешняя машина вообще не «ускоряется».Вы только что сели в новую более быструю машину.
Но что вы делаете с этим новым возвращенным объектом?Ничего:
renault.speedUp();
Объект renault
не изменяется, а новый возвращаемый объект игнорируется / отбрасывается.renault
по-прежнему идёт как 25.
Если вы хотите, чтобы speedUp()
влиял на текущий автомобиль, измените текущий объект вместо того, чтобы возвращать новый:
public void speedUp(){
this.speed += 2;
}
Примечаниечто это больше не возвращает объект.Если вам это действительно не нужно, семантика этого потока на самом деле не имеет смысла.(Не все должен быть свободным интерфейсом.) Таким образом, этот тест необходимо изменить:
@Test
public void speedIncrease(){
assertEquals(27,renault.speedUp().currentSpeed());
}
На что-то вроде этого:
@Test
public void speedIncrease(){
renault.speedUp();
assertEquals(27,renault.currentSpeed());
}