>  기사  >  백엔드 개발  >  Laravel 단위 테스트에서 요청을 실행하는 방법

Laravel 단위 테스트에서 요청을 실행하는 방법

WBOY
WBOY원래의
2016-09-02 08:57:041036검색

<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>

getBagMessageBag 객체를 얻습니다. 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을 살펴보실 수 있습니다. 이는 기본적으로 요청 및 응답에 대한 모든 테스트를 다루고 있습니다. 사용자 인증 테스트, 쿠키 세션 테스트, 데이터베이스 테스트, 대기열 테스트 등과 같은 다른 부분을 테스트하려면 다른 방법을 사용하십시오.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.