这是我要测试的方法:
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);
}
答案 0 :(得分:0)
当你模拟一个对象时,你会创建一个特殊的实例,但你不能使用" new"创建该类的下一个实例。变得嘲笑。因此,在您的测试中,抛出的异常是一个真正的MyException。