创建一个MyException的模拟

时间:2015-02-08 16:44:10

标签: php exception mocking phpunit

这是我要测试的方法:

class a {
    public function method($args) {
        if($args == "xxx") {
            throw new MyException("Right Message");
        }
    }

问题是Myexception.php不可用,所以我应该创建一个模拟MyException并重新定义异常,这是我的解决方案,但不起作用。感谢

/**
     * @expectedException InvalidArgumentException
     * @expectedExceptionMessage Right Message     
     */
     public function testSubscribeCommunity(){
        $MyException = $this->getMockBuilder('MyException')
                ->setMethods(array('__construct'))
                ->setConstructorArgs(array('Right Message'))
                ->disableOriginalConstructor()
                ->getMock();
        $MyException->method('__construct')
                ->will($this->throwException(new InvalidArgumentException));
        $objectToTest = new A();        
        $objectToTest->method(null,$args);
    }

1 个答案:

答案 0 :(得分:0)

当你模拟一个对象时,你会创建一个特殊的实例,但你不能使用" new"创建该类的下一个实例。变得嘲笑。因此,在您的测试中,抛出的异常是一个真正的MyException。