在 Laravel 中模拟时找不到“Eloquent”类

Posted

技术标签:

【中文标题】在 Laravel 中模拟时找不到“Eloquent”类【英文标题】:Class 'Eloquent' not found when mocking in Laravel 【发布时间】:2014-02-15 20:03:13 【问题描述】:

我正在通过 Jeffrey Way 的 Laravel 测试解码,我遇到了一个我似乎无法解决的问题。

我实际上正在学习本教程: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.顺便说一句,如果我使用 Jeffrey 的 Laravel 生成器并生成一些脚手架,例如

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】:

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

//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');

【讨论】:

以上是关于在 Laravel 中模拟时找不到“Eloquent”类的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 5.3 中调用 SEOStats 实例时找不到类 'SEOstats\SEOstats'

使用 Laravel 路由时找不到 404 错误

在提交 Vue js 和 Laravel 时找不到 POST 404?

为啥当我直接调用它时找不到类名 laravel5

使用 DigitalOcean 在 CentOS 7 上安装 laravel 5 时找不到 PDO 驱动程序

使用LaraDock使用Nginx运行Laravel时找不到文件