在 laravel 5.2 单元测试中模拟作业
Posted
技术标签:
【中文标题】在 laravel 5.2 单元测试中模拟作业【英文标题】:Mocking Jobs in laravel 5.2 Unit testing 【发布时间】:2016-05-07 02:51:58 【问题描述】:我对单元测试很陌生。我被要求在我的应用程序中编写单元测试。在我的应用程序中,我们有控制器和服务。我正在尝试像这样模拟从控制器调用的作业。
$this->expectsJobs(App\Jobs\UploadResponseEmail::class);
这会引发以下错误
production.ERROR: Mockery\Exception\NoMatchingExpectationException: 没有为 Mockery_0_Illuminate_Bus_Dispatcher::dispatch(object(App\Jobs\UploadResponseEmail)) 找到匹配的处理程序。该方法是意外的,或者它的参数与该方法的预期参数列表不匹配
Job 有一个构造函数,它需要一个参数。我认为这会导致错误。我如何在这里传递构造函数参数。有什么想法吗?
【问题讨论】:
【参考方案1】:如果你使用 lumen,你需要在你的 composer.json 文件中添加 mockery。 Laravel 默认有它,所以你的问题是关于 Lumen 而不是 Laravel
"mockery/mockery": "0.9.*",
即使从 Laravel 5.1 开始,它也存在: https://github.com/laravel/laravel/blob/5.1/composer.json
Lumen 5.2 缺少的地方: https://github.com/laravel/lumen/blob/v5.2.1/composer.json
【讨论】:
以上是关于在 laravel 5.2 单元测试中模拟作业的主要内容,如果未能解决你的问题,请参考以下文章