기본 PHP 예외 객체를 확장하는 레거시 코드를 테스트하고 있습니다. 이 코드는 사용자 정의 HTML 오류 메시지를 인쇄합니다.phpUnit - 모의 PHP 확장 예외 객체
테스트 된 코드가 예외를 생성 할 때 전체 HTML 메시지를 제공하는 대신 기본 메시지를 반향 출력하는 방식으로이 예외 객체를 조롱하고 싶습니다.
나는 이것을 수행하는 방법을 알 수 없다. 명시 적 예외를 테스트 할 수있는 것처럼 보이지만 일반적으로 예외 동작을 변경할 수는 없으며 기본 PHP 기능을 확장하는 객체를 조롱 할 수도 없습니다. (예외를 넘어서 이것에 대한 또 다른 예를 생각할 수는 없지만 ...)
나는 조롱 한 객체를 어디에 부착하겠습니까? 당신이 '새로운 던지기'를 방해 할 수없는 것처럼 보이는데 이것은 객체 메소드가 호출되는 곳입니다 ....
아니면 어떻게 든 기존의 phpunit 예외 기능을 사용하여 예외 동작을 변경 할 수 있다면 .... 당신은 모든 코드에 대한 일반적인 방법으로, 원하는 ...하지만 그것은 해키 나쁜 것처럼이 보인다
편집 :
class FooTest extends PHPUnit_Framework_TestCase{
public function testBar(){
include '/path/to/file.php'; //generates exception
$this->assertTrue($baz);
}
}
...
//overridden exception class
class Foo_Exception extends ErrorException{
...
: 여기 일을 명확하게하는 몇 가지 코드는 그래서, 제 질문은,이 경우에 따라 그것을하지 않고,이 클래스를 다루는 방법이 있습니까? 예외의 동작을 테스트하지 않으면 예외가 발생하는 코드는 무엇입니까?
이제는 혼란스러워집니다. 포함의 예외가 잡히지 않으면 첫 번째 응답이 유지되거나 잡히고 두 번째 대답이 유지됩니다. 예외의 종류는 부적합합니다. – Artefacto
당신 말이 맞아요 ... ob_start가 어떻게 처리 할 것인지 혼란 스러웠습니다 ... 그러나 해결책은 오류 메시지를 표시하지 않지만 모든 출력을 똑같이 처리한다는 의미입니다 ... 예외 클래스 자체를 다루는 좀 더 구체적인 해결책에 대해 묻고 있었다고 생각합니다. 그러나 이제는이 과정을 통해 모든 방법이 실현 가능하지 않다고 생각했거나 ... 필연적으로 바람직합니다 ... I 객체의 동작을 다루는 가장 좋은 경우는 각각의 경우에 예외를 발생시키는 것입니다. 막연한 질문을 할 때 상황이 의미가있는 경우가 있습니다. – awongh