创建 MyException 的模拟
Create a Mock of a MyException
这是我要测试的方法:
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" 创建的 class 的下一个实例成为模拟对象。所以在你的测试中抛出的异常是一个真正的 MyException 异常。
这是我要测试的方法:
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" 创建的 class 的下一个实例成为模拟对象。所以在你的测试中抛出的异常是一个真正的 MyException 异常。