【发布时间】:2021-08-22 09:09:32
【问题描述】:
我正在尝试在 Laravel 5 上使用 Mockery 库的 overload 选项。
我现在的环境:
- Laravel 5
- 嘲讽 1.0
- PHPUnit 7.5
我写了这个测试用例:
namespace Tests\Unit;
use Mockery;
use Tests\TestCase;
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
class RenewSignatureTest extends TestCase
{
public function testHandle()
{
$mock = Mockery::mock('overload:App\FooClass');
$mock->shouldReceive('callBar')
->times(2);
}
}
根据documentation,这个测试应该失败,但不管我做什么,测试永远不会失败!它总是导致:
Time: 304 ms, Memory: 19.53 MB
OK (1 test, 1 assertion)
如果我删除 overload: 选项,测试将失败。所以我假设我没有按预期使用库的方法。
新测试:
namespace Tests\Unit;
use Mockery;
use Tests\TestCase;
/**
* @runTestsInSeparateProcesses
* @preserveGlobalState disabled
*/
class RenewSignatureTest extends TestCase
{
public function testHandle()
{
$mock = Mockery::mock('App\FooClass');
$mock->shouldReceive('callBar')
->times(2);
}
}
结果:
Mockery\Exception\InvalidCountException: Method callBar(<Any Arguments>) from Mockery_0__App_FooClass should be called exactly 2 times but called 0 times.
我做错了吗?有谁知道如何正确使用这个选项?
【问题讨论】:
标签: php laravel laravel-5 phpunit mockery