저는 초보 개발자이며 phpUnit을 설정하고 기본 테스트 세트를 기존 앱에 설정하려고합니다. 나타나게 하다. 나는 라라웨어 문서를 통해 몇 가지 기본적인 테스트를 실행하려고합니다.phpUnit 경로를 테스트하는 중 오류가 발생했습니다 : ErrorException : 비 객체의 속성을 얻으려고 시도합니다.
AlertsControllerTest::testIndexRoute
ErrorException: Trying to get property of non-object
내가 전화 한 방법은 다음과 같습니다 :
$response = $this->action('GET', '[email protected]');
나는 다음과 같은 예외를 얻을 : 나는 다음과 같은 실행하려고하면
public function count() {
$statusIds = DB::table('alert_status')->where('user_id', $this->crmUser->id)->where('is_new', 0)->lists('alert_id');
$count = DB::table('alerts')->WhereNotIn('id', $statusIds)->count();
return Response::json($count);
}
는 사람이 난 이유를 알고 있나요 이 오류가 발생합니까? 내가 아는 한, 나는 무엇이든 속성을 얻으려고하지 않는다. 나는 그 길로 전화하려고하고있다.
오류를 던지는 시험 방법은 다음과 같습니다 게시물에 매우 제한된 정보와
public function testIndexRoute() {
$this->crmUser = new stdClass();
$this->crmUser->id = new stdClass();
$this->crmUser->id = 1;
$response = $this->action('GET','[email protected]');
$count = $response->original; $this->assertResponseOk();
}
난 아직도 비록 같은 오류를 받고 있어요 ... 공공 기능 testIndexRoute() { $ this-> crmUser = 새 stdClass(); $ this-> crmUser-> id = new stdClass(); $ this-> crmUser-> id = 1; $ response = $ this-> action ('GET', 'AlertsController @ bannerAlerts'); $ count = $ response-> original; $ this-> assertResponseOk(); } – brianfr82
@ brianfr82 OP에 테스트 방법을 추가했습니다. 문제는 테스트 메소드 안에'$ this-> crmUser'를 추가하고 테스트중인 클래스가 아닌'AlertsControllerTest'에 추가하는 것입니다. 테스트 된 클래스에 사용자를 주입해야하는데, 'AlertsController' 인스턴스 인 – Ray
을 따르고 있습니다.하지만 PHP에서 실제로 어떻게하는지 잘 모르겠습니다. 조금 더 깊이 설명해 주시겠습니까? 미안하지만, 나는 비참하고 미숙하며 많은 것을 나에게 던져주고있다. – brianfr82