Laravel:在API测试中使用Eloquent模型

3

我想使用真实的数据库插入和查询来测试api,所以我尝试使用setUpBeforeClasstearDownAfterClass方法进行测试前和测试后的处理。

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

我在命名空间或环境方面是否有任何错误,或者甚至我不应该这样做?


作为替代方案,您可以考虑使用 Jeffrey Way 的这个软件包来在测试期间进行 DB 种子填充。效果非常好:https://github.com/laracasts/TestDummy - Laurence
1个回答

3

EloquentModel类的别名,因此您需要这样做:

use Illuminate\Database\Eloquent\Model as Eloquent;

class User extends Eloquent {

或者简单地扩展模型而不进行内联别名。
use Illuminate\Database\Eloquent\Model;

class User extends Model {

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接