使用Codeception进行Laravel 4模型单元测试 - 找不到类'Eloquent'

mtm*_*ald 5 phpunit laravel eloquent laravel-4 codeception

我正在尝试使用Codeception来运行我的Laravel 4单元测试.

对没有依赖项的简单类运行测试可以正常工作.但是当我实例化依赖于Eloquent的模型时,我得到了这个致命的错误:

PHP致命错误:第4行的/var/www/project/app/models/Role.php中找不到类'Eloquent'

单元测试:

<?php
use Codeception\Util\Stub;
class TestModel extends \Codeception\TestCase\Test 
{
  public function testExample()
  {
    $role = new Role;
    $role->name = 'superuser';
    $this->assertEquals('superuser', $role->name);
  }
}
Run Code Online (Sandbox Code Playgroud)

模型:

<?php
class Role extends Eloquent
{
  public function users()
  {
    return $this->belongsToMany('User');
  }
}
Run Code Online (Sandbox Code Playgroud)

项目结构:

我正在从项目根目录运行vendor/bin/codecept运行单元,具有以下文件结构:

/project
  codeception.yml
  /vendor/bin/codecept
  /app
    /tests
      unit.suite.yml
      /unit
         ExampleTest.php
    /models
       Role.php
                ...etc
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

mtm*_*ald 8

通过查看Codeception L4示例应用程序,我能够看到如何通过将这些行添加到project/app/tests/_boostrap.php来引导自动加载来解决此问题:

include __DIR__.'/../../vendor/autoload.php';
$app = require_once __DIR__.'/../../bootstrap/start.php';
\Codeception\Util\Autoload::registerSuffix('Page', __DIR__.DIRECTORY_SEPARATOR.'_pages');
Run Code Online (Sandbox Code Playgroud)

编辑:从Laravel 4.0升级到4.1时,还需要添加额外的行:

$app->boot();
Run Code Online (Sandbox Code Playgroud)