phpunit InvalidArgumentException的测试用例

时间:2015-03-04 11:40:45

标签: php symfony phpunit

请告诉我们如何在函数下创建测试用例以测试异常并正确抛出消息。我正在使用Symfony 2.

public function validateParams(Graph $graph, $start, $destination)
{
    if (!is_object($graph)) {

        throw new \InvalidArgumentException('Graph param should be an object !');
    }

    if (empty($start)) {

        throw new \InvalidArgumentException('Start param is empty !');
    }

    if (empty($destination)) {

        throw new \InvalidArgumentException('Graph param is empty !');
    }

    return true;
}

我使用下面的测试用例,它说,失败断言类型" \ InvalidArgumentException"扔了。

 /**
 * @expectedException \InvalidArgumentException
 */
public function testValidateParamsWhenStartingPointIsEmpty()
{
   $this->shortestPathCalc= new ShortestPathCalculator();
   $this->shortestPathCalc->validateParams($this->graph, ' ', 'f', 'Expected exception not thrown when starting point is empty !');
}

1 个答案:

答案 0 :(得分:1)

您班上的问题是empty的检查是:

来自doc

  

如果var存在并且具有非空的非零值,则返回FALSE。   否则返回TRUE。

此测试适用于验证器类(绿色条):

class ValidatorTest extends \PHPUnit_Framework_TestCase{

    /**
     * @expectedException InvalidArgumentException
     * @expectedExceptionMessage Start param is empty !
     */
    public function testA()
    {
        $validator = new Validator();
        $validator->validateParams(new Graph(),'',' ');
    }

希望这个帮助