Я пробовал все остальные посты, которые были опубликованы в stackoverflow, и я не могу понять это. Так что это означает, что я должен спросить.
public function bootstrapRadioButtons(
$name,
$options,
$value = '',
$divClass = '',
$label = array('class' => 'control-label')
) {
if (!isset($name) || !isset($options)) {
throw new MissingParameterException(__d('cockpit', 'Variable name must be set.'));
} else {
Может ли кто-нибудь написать тест, где проверяется это MissingParameterException? Есть специальный способ проверить это с помощью CakePHP?
Это то, что я до сих пор:
/**
* @expectException App\Exception\MissingParameterException
*/
public function testNameAndOptionsAreEmpty()
{
$this->CommonHelper->bootstrapRadioButtons('', '');
}
Вот что я использую в самом классе:
use App \ Exception \ MissingParameterException;
И это именно то, откуда это исключение MissingParameterException, но этот тест по-прежнему возвращает ошибку.
/**
* setUp method
*
* @return void
*/
public function setUp()
{
parent::setUp();
$view = new View();
$this->CommonHelper = new CommonHelper($view);
}
Условие для проверки того, что! Isset ($ name) и! Isset ($ options) является избыточным, поскольку для этой функции требуются параметры $ name и $ options, и php сгенерирует исключение перед выполнением вашего кода. Если Вы хотите проверить, что они не пусты, используйте этот код:
if (empty($name) || empty($options)) {
throw new MissingParameterException('Variable name must be set.');
}
И в этом случае тест будет выглядеть так:
/**
* @expectedException \Full\Namespace\To\MissingParameterException
*/
public function testNameNadOptionsAreEmpty()
{
$class = new \Your\Class();
$class->bootstrapRadioButtons('', '');
}
Других решений пока нет …