2016-06-18 5 views
1

가능한 가장 간단한 방법으로 저장소 메서드를 테스트하려고합니다. 필자는 조롱을 필요로하지 않는다. 실제로 데이터베이스에 추가하는 것으로 괜찮다. 어쨌든 나는 조롱을받을 수 없었다.Laravel의 테스트 저장소 메서드

public function testStore() 
{ 
    $data = ['name' => 'TestClub', 'code' => 'TCL']; 
    Input::replace($data); 
    $this->route('POST', 'clubs.store', $Input::all()); 
    $this->assertResponseOk(); 
} 

이 내 컨트롤러 방법 :

public function store() { 
    $validator = Validator::make($data = Input::all(), Club::$rules); 
    if ($validator->fails()) { 
     return Redirect::back()->withErrors($validator)->withInput(); 
    } 
    Club::create($data); 
    return redirect(Session::get('backUrl')); 
} 

내가 리턴 코드 (500)를 얻을, 나는 아무 생각이 왜

지금 나는이 있습니다. 내가 보낸 요청을 어떻게 든 볼 수 있습니까? 내가

+1

테스트에서'$ this-> dump()'를 사용하여 요청/응답에 대한 데이터를 출력 할 수 있습니다. – ceejayoz

답변

0

먼저 Laravel 5.0을 사용하고

, Input::all()를 사용하지 않습니다. 제출할 때 양식에 무엇이 있는지 모를 수도 있지만 대신 only을 사용하십시오.

그러나 도움이 될만한 경우 컨트롤러에 유효성 검사 논리를 넣지 않아야합니다. 대신 새 Request을 만들고 유효성 검사 규칙을 rules 배열에 넣어야합니다. 다음 규칙의 그런 다음이 요청의 내부에, 당신이 (당신이 사용자가 요청을 할 수 있어야합니다 경우 확인해야 어떤 논리 또는)이 authorize 기능에 return true를 추가 할 것입니다 그

php artisan make:request StoreUserRequest 

보자, 그리고 rules() 함수 (rules 함수 내의 배열에 대해보다 구체적으로).

이제 새 StoreUserRequeststore() 함수의 첫 번째 인수에 대한 종속성으로 추가하십시오.

public function store(App\Http\Requests\StoreUserRequest $request) 

이제 필드를 다시 가져 오려면 $request->only() 메서드를 사용하십시오.

Club::create($request->only(['field1', 'field2', 'blob1', 'text1']); 

는 또한, 어떤 필드는 당신이 당신의 Club 모델의 protected $fillable 배열 내에 표시됩니다에 데이터를 추가 할 있는지 확인하십시오.

protected $fillable = ['field1', 'field2', 'blob1', 'text1']; 

이렇게해야합니다.

+1

답변에 많은 제안이 있지만 문제가 실제로 어떻게 해결되는지는 알 수 없습니다. –