<code>class TestRequest() { public function rules(){ return [ 'a'=>['required','min:3'], ]; } } //controller public functino store(TestRequest $request) { } Test.php public function testStore() { $data = []; $response = $this->call('POST','uri',$data); dd($response->getContent()) } </code>
인증이 실패할 때마다 $response->getStatusCode()는 항상 302이며 이는 정상입니다.
그런데 예를 들어 $data['a'] = 'a'인 경우 자릿수가 3보다 작은 경우 프롬프트 정보를 얻고 싶은데 어떻게 얻어야 할까요?
테스트가 처음입니다. 도와주세요. 감사합니다!
<code>class TestRequest() { public function rules(){ return [ 'a'=>['required','min:3'], ]; } } //controller public functino store(TestRequest $request) { } Test.php public function testStore() { $data = []; $response = $this->call('POST','uri',$data); dd($response->getContent()) } </code>
인증이 실패할 때마다 $response->getStatusCode()는 항상 302이며 이는 정상입니다.
그런데 예를 들어 $data['a'] = 'a'인 경우 자릿수가 3보다 작은 경우 프롬프트 정보를 얻고 싶은데 어떻게 얻어야 할까요?
테스팅이 처음이신데 도와주세요. 감사합니다!
mwjmt mg
이 테스트는 너무 이상합니다..
정말로 오류 메시지를 받고 싶다면 Session::get을 사용할 수 있습니다. 확인이 실패한 후 오류 개체가 세션에 플래시로 저장되기 때문입니다.
예를 들어 귀하의 경우는 다음과 같습니다.
<code>$response = $this->call(...); $this->assertEquals(302, $response->getStatusCode()); dd(session('errors')->getBag('default')->first('a'));</code>
getBag
은 MessageBag
객체를 얻습니다. get
을 사용하여 모든 확인 오류 메시지를 얻거나 first
를 사용하여 첫 번째 오류 메시지를 얻을 수 있습니다. API 문서는 http://laravel-china.org/api/...
--- 업데이트
일반적으로 이와 같은 테스트는 최소한 두 부분으로 나누어야 합니다.
먼저 유효성 검사 부분을 테스트하고 Validator
과 같은
<code>$data = ['a' => 'b']; $request = new MyRequest(); $rules = $request->rules(); $validator = Validator::make($attributes, $rules); $fails = $validator->fails(); $this->assertEquals(false, $fails);</code>
그런 다음 테스트 방법을 작성하여 그 뒤에 있는 논리를 테스트합니다.
Laravel의 테스트 요청과 관련하여 프레임워크에서는 IlluminateFoundationTestingConcernsMakesHttpRequests
을 살펴보실 수 있습니다. 이는 기본적으로 요청 및 응답에 대한 모든 테스트를 다루고 있습니다. 사용자 인증 테스트, 쿠키 세션 테스트, 데이터베이스 테스트, 대기열 테스트 등과 같은 다른 부분을 테스트하려면 다른 방법을 사용하십시오.