未找到“嘲弄”类

Posted

技术标签:

【中文标题】未找到“嘲弄”类【英文标题】:Class 'Mockery' not found 【发布时间】:2014-01-16 13:42:37 【问题描述】:

我使用 laravel (4.1) 框架,我阅读了“Laravel-testing-decoded”,这是 Jeffrey Wey 的电子书。

我想测试我的模态用户和我的方法setPasswordAttribute($password)

我的单元测试:

<?php

class UserTest extends TestCase 

    public function testHashesPasswordWhenSet()

        Hash::shouldReceive('make')->once()->andReturn('hashed');

        $user = new User;
        $user->password = 'food';

        $this->assertEquals('hashed', $user->password);
    

但是当我启动 CLI 时:phpunit 它返回一个错误:Fatal error: Class 'Mockery' not found

完全错误:

    Fatal error: Class 'Mockery' not found in /Applications/MAMP/htdocs/ptf/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php on line 84

    Call Stack:
        0.0021     236384   1. main() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/composer/bin/phpunit:0
        0.0294    1425104   2. PHPUnit_TextUI_Command::main() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/composer/bin/phpunit:63
        0.0294    1425336   3. PHPUnit_TextUI_Command->run() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129
        0.0692    3626416   4. PHPUnit_TextUI_TestRunner->doRun() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176
        0.0741    3944720   5. PHPUnit_Framework_TestSuite->run() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349
        0.0741    3946368   6. PHPUnit_Framework_TestSuite->run() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:705
        0.0742    3946968   7. PHPUnit_Framework_TestSuite->runTest() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745
        0.0742    3947000   8. PHPUnit_Framework_TestCase->run() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775
        0.0743    3948232   9. PHPUnit_Framework_TestResult->run() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783
        0.0754    4005504  10. PHPUnit_Framework_TestCase->runBare() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648
        0.2926   15417592  11. PHPUnit_Framework_TestCase->runTest() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:838
        0.2926   15418872  12. ReflectionMethod->invokeArgs() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983
        0.2926   15418904  13. UserTest->testHashesPasswordWhenSet() /Applications/MAMP/htdocs/ptf/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:983
        0.2928   15426728  14. Illuminate\Support\Facades\Facade::shouldReceive() /Applications/MAMP/htdocs/ptf/app/tests/models/UserTest.php:7
        0.2928   15426944  15. Illuminate\Support\Facades\Facade::createFreshMockInstance() /Applications/MAMP/htdocs/ptf/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:50
        0.2928   15427040  16. Illuminate\Support\Facades\Facade::createMockByName() /Applications/MAMP/htdocs/ptf/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:64

我不明白,为什么会出现这个错误。

【问题讨论】:

【参考方案1】:

你安装了 Mockery 吗? 如果没有,请更新您的 composer.json

"require-dev": 
    "mockery/mockery": "dev-master@dev"

然后运行:

 composer update

【讨论】:

谢谢帮助,没关系。但通常 Laravel 也需要嘲笑:github.com/laravel/framework/blob/master/composer.json#L71

以上是关于未找到“嘲弄”类的主要内容,如果未能解决你的问题,请参考以下文章

嘲弄“应该接收”但方法不存在

嘲弄如何断言类实例

Codeception Cest 嘲弄

嘲弄模拟不返回指定值

具有不止一种方法的嘲弄学说/存储库

嘲弄用 andReturn 返回新对象