Пока суть да дело я качнул скил: Можно предположить что в задаче функции добавить к переменной значение. Известно что переменная к которой идет добавление это двумерный массив в котором есть значение ключа
$key и есть массив
$this -> field [ $key ] строками которого также есть массив. Где
$this -> field [ $key ][] = (array)$value; Что есть результатом работы функции? Массив $value должен стать строкой элемента массива
$this -> field [ $key ] что и есть положительным результатом работы функции. Для проверки подойдет метод PHPUnit
assertContains(mixed $needle, Iterator|array $haystack[, string $message = '']).
Тогда метод получиться:
function testCanFieldAdded()
{
$te = new TuristEducation();
$key = 'Hi';
$value = [ 'Morning', 'Good morning' ];
$te -> set( $key , $value );
$this -> assertContains( $value, $te -> field[$key] );
}
Теперь создаем пустой метод:
public function set( $key, array $value ){}
Красная зона пройдена, обращаемся к рефакторингу функции set, реализовывая алгоритм добавления к свойству
array field, значения
value в строку с ключом
key:
public function set( $key, array $value )
{
$this -> field[ $key ][] = $value;
}
Хочу еще качнуть для более правильного выбора метода assert. К примеру метод мог бы быть таким:
function testCanFieldAdded()
{
$te = new TuristEducation();
$this -> assertTrue( $te -> set( 'Hi' , [ 'Morning', 'Good morning' ] ) );
}
С методом в классе:
public function set( $key, $value = NULL )
{
return ( NULL != ( $this -> field[ $key ][] = $value ) );
}
Что доверяет операции присваивания $this -> field[ $key ][] = $value которая не может не выполниться.
Как быть в правильном выборе метода assert в данном случае?
_____________
Трус не играет в хокей