:를 분명히는 HTTP는 응답 - 특성 "원래"대신보기 개체의 문자열을 포함하는 다음과 같이 내가 컨트롤러의 방법에서보기를 반환하고
return view('Main::pages.content-page', compact('content'));
보기 그러나 제대로 렌더링 내가 응답 객체를 위해 dd 때, I 응답 객체의 "원본"속성은 문자열이지만 뷰 객체 여야합니다.
Response {#385 ▼
+original: """
<!DOCTYPE html>\n
<html lang="en">\n
<head>\n
<meta charset="utf-8">\n
<meta http-equiv="X-UA-Compatible" content="IE=edge">\n
<meta name="viewport" content="width=device-width, initial-scale=1">\n
<meta name="author" content="">\n
<meta name="csrf-token" content="2CQirHnZ7isCBRfkhOYkzPAWOzNIqJISrbb1mfDv">\n
<meta name="description" content="">\n
<meta name="keywords" content="">\n
<title id="page_title"> Découvrir\n </title>\n
.........
내 시험에서 본질적으로 보면 다음과 같은 오류
F 1/1 (100%)
Time: 179 ms, Memory: 20.00MB
There was 1 failure:
1) IndexControllerTest::testGetPageMethod
The response was not a view.
Failed asserting that false is true.
을 받고
$this->get(route('main.page', ['content' => $content->slug]))
->assertResponseOk()
->assertViewHas('content', $content);
암을하고있는 중이 야하기 때문에 내 테스트 실제로, 그것 때문에 실패 때문에 예상 된 동작입니다 구조는 방법의 이유를 볼 수 있습니다
/**
* Assert that the response view has a given piece of bound data.
*
* @param string|array $key
* @param mixed $value
* @return $this
*/
public function assertViewHas($key, $value = null)
{
if (is_array($key)) {
return $this->assertViewHasAll($key);
}
if (! isset($this->response->original) || ! $this->response->original instanceof View) {
return PHPUnit::assertTrue(false, 'The response was not a view.');
}
......
원본은 문자열이지만 뷰 객체 여야하므로 조건 ! $this->response->original instanceof View
이 실패합니다.
여기에서 길을 잃었습니다. 이 경우 assertViewHas 메서드의 조건이 충족되는 이유는 무엇입니까?
I am on Laravel Homestead version '3.0.2'
Laravel 5.2.45
[보기는'__toString()'] (https://laravel.com/api/4.2/Illuminate/View/View.html#method___toString)을 구현합니다. 이것이 이유인지는 모르겠지만 Laravel이이를 호출하는 문자열 컨텍스트에서 View를 사용하는지 확인하는 것이 좋습니다. – Gordon
은보기를 문자열로 변환하는 방법으로 __toString()을 구현합니다. 뷰 객체의 기본값. 보기가 블레이드 템플릿으로 올바르게 템플릿 화되었는지 확인해야합니다. – Aschab
예보기 구현 __toString()을 구현했으나 응답 객체는보기로 문자열을 캐스팅하여 "content"속성으로 설정해야합니다. 응답 객체의 "original"속성 항상 원래 뷰 객체 여야합니다. –