![](/img/trans.png)
[英]Mockery NoMatchingExpectationException thrown when using with(Mockery::on(Closure))
[英]Mockery throws NoMatchingExpectationException when testing Laravel facade
我正在尝试测试我的服务类之一,但无法通过PHPUnit测试。
测试失败的相关部分:
File::shouldReceive('put')->with('app/storage/logs/laravel.log', 'New content.')->once()->andReturn(12);
我要测试的代码(简化版):
$date = Carbon::now()->toDayDateTimeString();
$fileContent = sprintf(
"Last maintenance check performed at %s. The old logs have been deleted.\n\n",
$date
);
// $this->fileLocation refers to a string 'app/storage/logs/laravel.log'
return File::put($this->fileLocation, $fileContent);
我得到的例外:
Time: 1.72 seconds, Memory: 17.50Mb
There was 1 error:
1) Unit\Services\Maintenance\LogCleanerTest::testLogsAreClearedAndUpdated
Mockery\Exception\NoMatchingExpectationException: No matching handler found for Mockery_0_Illuminate_Filesystem_Filesystem::put("app/storage/logs/laravel.log", "Last maintenance check performed at Tue, Jul 15, 2014 12:16 PM. The old logs have been deleted.
"). Either the method was unexpected or its arguments matched no expected argument list for this method
/home/vagrant/Code/MyApp/vendor/mockery/mockery/library/Mockery/ExpectationDirector.php:93
/home/vagrant/Code/MyApp/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:211
/home/vagrant/Code/MyApp/app/Code/Services/Maintenance/LogCleaner.php:19
/home/vagrant/Code/MyApp/app/Code/Services/Maintenance/LogCleaner.php:19
/home/vagrant/Code/MyApp/app/tests/Unit/Services/Maintenance/LogCleanerTest.php:30
/home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:179
/home/vagrant/.composer/vendor/phpunit/phpunit/src/TextUI/Command.php:132
有人可以解释我在做什么错吗? 任何帮助将不胜感激。
就像是:
File::shouldReceive('put')->with('app/storage/logs/laravel.log', 'Last maintenance check performed at')->once()->andReturn(12);
应该管用。 您是在嘲笑期待“新内容”。 作为第二个参数,但是您的代码正在发送“上次维护检查...”。 我相信嘲讽会在默认情况下尝试匹配正则表达式,如果它不能匹配确切的字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.