Php 创建MyException的模拟

Php 创建MyException的模拟,php,exception,mocking,phpunit,Php,Exception,Mocking,Phpunit,这是我要测试的方法: class a { public function method($args) { if($args == "xxx") { throw new MyException("Right Message"); } } 问题是Myexception.php不可用,所以我应该创建Myexception的模拟并重新定义异常,这是我的解决方案,但不起作用。谢谢 /** * @expectedExcept

这是我要测试的方法:

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);
    }

当您模拟一个对象时,您会创建它的一个特殊实例,但不会使使用“new”创建的类的下一个实例变为模拟。因此,在您的测试中,抛出的异常是真正的MyException异常。

请提供更多信息,例如“不工作”的具体含义。