[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Надо качнуть скил в TDD
Страницы: 1, 2
stump
К примеру сеттер:

public function set( $key, array $value )
{
$this -> field[ $key ][] = $value;
}


Как такую функцию обложить тестами из коллекции PHPUnit?

_____________
Трус не играет в хокей
stump
Пока суть да дело я качнул скил: Можно предположить что в задаче функции добавить к переменной значение. Известно что переменная к которой идет добавление это двумерный массив в котором есть значение ключа $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 в данном случае?


_____________
Трус не играет в хокей
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.