2014-12-17 6 views
3

Я хочу проверить api с реальной вставкой и запросом базы данных, поэтому я пытаюсь использовать метод setUpBeforeClass и tearDownAfterClass для процесса до и после тестирования.Laravel: используйте Eloquent Model in API Testing

<?php 

use App\Models\User; 

class UserTest extends TestCase { 

public static function setUpBeforeClass() 
{ 
    User::create([ 'name' => 'Tom' ]); 
} 

public function testStore() 
{ 
    $this->call('POST', 'users', [ 
     'name' => 'Tim' 
    ]); 

    $this->assertResponseOk(); 
} 

public static function tearDownAfterClass() 
{ 
    $users = User::where('name', '=', 'Tom') 
       ->orWhere('name', '=', 'Tim')->get(); 

    $users->each(function($user) { 

     $user->delete(); 
    }); 
} 

} 

Но, когда он будет получать Eloquent не найдено.

Fatal error: Class 'Eloquent' not found in /Applications/MAMP/htdocs/edu-api/apis/app/models/User.php on line 6 

<?php namespace App\Models; 

use Illuminate\Auth\UserTrait; 
use Illuminate\Auth\UserInterface; 
use Illuminate\Auth\Reminders\RemindableTrait; 
use Illuminate\Auth\Reminders\RemindableInterface; 

use Eloquent; 

class User extends Eloquent { 

Есть ли ошибки, которые я создаю с пространством имен или окружающей средой, или даже я не должен этого делать?

+0

В качестве альтернативы - Вы могли бы рассмотреть этот пакет из Джеффри Путь для посева БД во время испытаний. Работает удивительно хорошо: https://github.com/laracasts/TestDummy – Laurence

ответ

3

Eloquent является псевдонимом для Model класса, так что вам нужно это:

use Illuminate\Database\Eloquent\Model as Eloquent; 

class User extends Eloquent { 

или просто расширить модель без встроенного наложения спектров

use Illuminate\Database\Eloquent\Model; 

class User extends Model { 
Смежные вопросы