Given this code:
$this->prophesize(Publisher::class)
->processChanges($interval)
->shouldBeCalled()
->willThrow(new TypeError())
->getObjectProphecy()
->reveal();
when the processChanges method is called, it throws the specified TypeError, but the call is not recorded.
The reason for this are that:
CallCenter catches Exception, not Throwable
Call class requires an ?Exception in the constructor, not Throwable.
IMO it is a perfectly valid assumption that a piece of code can cause a type error. It's not often, but it is a valid case specifically with generated code. I checked that if I just change Exception to Throwable in the two places, it works. Not sure if that breaks some other cases though.
Given this code:
when the
processChangesmethod is called, it throws the specifiedTypeError, but the call is not recorded.The reason for this are that:
CallCentercatchesException, notThrowableCallclass requires an?Exceptionin the constructor, notThrowable.IMO it is a perfectly valid assumption that a piece of code can cause a type error. It's not often, but it is a valid case specifically with generated code. I checked that if I just change
ExceptiontoThrowablein the two places, it works. Not sure if that breaks some other cases though.