2017-11-03 12 views
-1

나는 View::make($string)을 반환하는 함수를 가지고있다. 이 함수가 실제로 View 객체의 인스턴스를 반환했는지 테스트하고 싶습니다. $string은 존재하는 파일을 가리 킵니다.View :: make in Phpunit

내가 Phpunit 내에서이 기능을 실행하려고하면 마치는 것 같지 않습니다. 어떻게 Phpunit에서 View 객체가 생성되었는지 테스트 할 수 있습니까?

답변

0

문제는 var_dump의 사용으로 인해 문제가되는 것을보고 싶었습니다. 출력물에 아무것도 표시되지 않았으므로 콘솔에 개체를 출력하는 대신 View::make과 관련 있다고 가정했습니다.

0

유효하지 않은 문자열을 제공하면 뷰 객체가 생성되지 않고 예외가 발생합니다. 당신이 당신의 예외를 방지 기능을하지만,이 문제를 해결 갈 수있는 방법이 무엇인지 확실하지, 실패한 테스트에서이 줄을 포함하는 것입니다

$this->expectException(InvalidArgumentException::class); 
+0

예외가 발생하면 Phpunit이이를 표시하고 프로세스가 종료됩니다. 예외가 어딘가에 잡히면 (나는 어디에도 아무 것도 붙잡고 있지 않다) 과정이 끝날 것이다. 내가 가지고있는 것은 내가 그것을 끝낼 때까지 끝나지 않는 과정이다. 문자열은 유효하며 그것을 나타내는 뷰가 존재합니다. – eithed

+0

제 잘못, '파일이 존재하지 않습니다'라는 것을 읽었습니다. 나는이 코드를 사용하여 빠른 테스트를 수행했으며 전체보기 객체를 덤프했다.'$ test = view ('auth.login');dd ($ test);'최근에 long processing view에 대한 유사한 스레드에서 답을 냈습니다. 문제는 처리하는 데 많은 시간이 걸린 MySQL 요청의 수로 밝혀졌습니다. 또한 Denis Priebe 대답은 좋은 방법입니다. – lchachurski

+0

'test.blade.php' 뷰에는'test' 문자열 만 들어 있습니다. phpunit 테스트에서 나는 var_dump (view ('test')); exit;'같은 결과를 얻으려면 아무것도 표시하지 않고 프로세스가 멈추는 것 – eithed

0

Laravel 특별히 뷰를 테스트하기 위해 설계 도우미 메서드가 있습니다.

그들 중 일부

은 다음과 같습니다

더 많은 정보는 여기에서 찾을 수 있습니다

$response = $this->get('/path/to-your-route'); 


$response->assertViewIs($value); 

$response->assertViewHas($key, $value = null); 

$response->assertViewHasAll(array $data); 

$response->assertViewMissing($key); 
: https://laravel.com/docs/5.5/http-tests#available-assertions

당신이 뭔가를 주장해야하는 경우가 뭔가의 인스턴스, 다음을 시도 할 수 있습니다 :

$this->assertInstanceOf($expected, $actual); 
+0

내가 뭘 물 었는지 다시 읽어 보시기 바랍니다. – eithed

+0

문제점을 복제했습니다. 테스트 객체가 "매달린"이유는 리턴 된 뷰 객체가 상당히 크기 때문입니다. 콘솔에 렌더링 할 부분이 많습니다. 나는 왜 당신이'View :: make()'메소드를 테스트하고 있는지 확신 할 수 없다. Laravel에는 이미 작동하는지 확인하기 위해 작성된 테스트가 있습니다. 대신 위에 언급 한 솔루션을 사용하여 자신의 논리를 테스트해야합니다. –

+0

내 메소드가 실제로'assertInstanceOf'를 사용하여'View'의 인스턴스를 리턴하는지 테스트하려고합니다. 나는'View :: make'를 테스트하지 않을 것입니다. – eithed