在Laravel嘲笑时找不到“Eloquent”等级

时间:2014-01-24 17:56:26

标签: laravel phpunit mockery

我正在关注Jeffrey Way的Laravel Testing Decoded,我遇到了一个似乎无法修复的问题。

我实际上是通过本教程完成的:http://net.tutsplus.com/tutorials/php/testing-laravel-controllers/这是他书中的摘录。

基本上我有这样的测试:

class PostsTest extends TestCase {


    public function __construct() 
    {
        $this->mock = Mockery::mock('Eloquent', 'Post');        
    }

就像嘲笑Eloquent和Post回归一样:

PHP Fatal error:  Class 'Eloquent' not found

当我运行phpunit时。顺便提一下,如果我使用杰弗里的Laravel Generators并且只生成一些支架,例如

php artisan generate:scaffold post --fields="title:string, body:string"

运行phpunit我得到同样的错误。他正在使用相同的东西:

$this->mock = Mockery::mock('Eloquent', 'Post');

模拟课程。有没有人对这个问题有什么建议?


我一直在从头开始学习本教程,但仍然遇到同样的错误。我已将其推送到公共仓库,以便人们可以看到:https://github.com/RyanHavoc/tdd-laravel

只需将其拉下来,运行composer install / update和phpunit。

1 个答案:

答案 0 :(得分:6)

我找到了解决问题的方法。

//Causes the Class 'Eloquent' not found error
public function __construct()
{
    $this->mock = Mockery::mock('Eloquent', 'Post');
}

//Setting the mocks in the setUp() method instead works
public function setUp() 
{
    parent::setUp();
    $this->mock = Mockery::mock('Eloquent', 'Post');
}