Полезные вещи в phpUnit

Ниже приведён код теста

//{{{ testContragentChecks
/**
 * Проверка учета контрагентов при создании связи
 * @param classC $contractor1
 * @param classC $contractor2
 * @param boolean $exceptionExpected
 * @dataProvider providerContragentChecks
 */
	public function testContragentChecks( $Contractor1 = NULL, $Contractor2 = NULL, $ExceptionExpected = false )
	{
		if ( $Contractor1 && $Contractor2 )
		{
			$this->op_o[0]->setContractor( $Contractor1 );
			$this->op_z[0]->setContractor( $Contractor2 );
			$this->op_o[0]->save();
			$this->op_z[0]->save();
		}
		if ( $ExceptionExpected ) {
			$this->setExpectedException( 'ExceptionClass' );
		}
		BumsFinM_FinLink::createLink( $this->op_o[0], $this->op_z[0], $this->money[3] );
	}
//===========================================================================}}}
//{{{ providerContragentChecks
/**
 * Дата-провайдер для учета контрагентов при создании связи
 * Возвращает двух контрагентов и флаг - нужно ли ждать исключения
 * @since  
 * @author 
 */
	public function providerContragentChecks()
	{
		$c1 = classC::create();
		$c1->setName( 'testC1' );
		$c1->save();
		$c2 = classC::create();
		$c1->setName( 'testC2' );
		$c2->save();
		return array(
		// Без контрагентов
			array(),
		// Разные
			array( $c1, $c2, true ),
		// С общим контрагентом
			array( $c1, $c1 ),
		);
	}

Стоит обратить внимание на @dataProvider providerContragentChecks (название метода произвольное) и на $this->setExpectedException( ‘ExceptionClass’ );.
Датапровайдер предоставляет данные для теста (они подставляются в аргументы метода), для теста он вызывается один раз, в отличие от setUp().
А setExpectedException говорит о том, что ожидается исключение, и его класс.

LEAVE A COMMENT