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异常。请提供更多信息,例如“不工作”的具体含义。