Laravel:在 API 测试中使用 Eloquent 模型
Posted
技术标签:
【中文标题】Laravel:在 API 测试中使用 Eloquent 模型【英文标题】:Laravel : Use Eloquent Model in API Testing 【发布时间】:2015-02-15 18:05:33 【问题描述】:我想用真实的数据库插入和查询来测试api,所以我尝试使用setUpBeforeClass
和tearDownAfterClass
方法进行前后测试。
<?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
not found。
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。效果非常好:github.com/laracasts/TestDummy 【参考方案1】:Eloquent
是Model
类的别名,所以你需要这个:
use Illuminate\Database\Eloquent\Model as Eloquent;
class User extends Eloquent
或者只是扩展模型而不使用内联别名
use Illuminate\Database\Eloquent\Model;
class User extends Model
【讨论】:
以上是关于Laravel:在 API 测试中使用 Eloquent 模型的主要内容,如果未能解决你的问题,请参考以下文章
如何使用phpunit在具有动态URI的laravel中测试REST api
Laravel 5.1 使用 JSON 的 API 的 PHPUnit 测试
如何使用 API 中间件在 Laravel 中测试 PHPUnit 一个经过身份验证的用户?