【发布时间】:2020-06-09 02:12:13
【问题描述】:
我有这个代码:
// ...
Passport::actingAs($this->user);
$mock = Mockery::mock(User::class);
$mock->shouldReceive('myMethodName')->andReturn(157);
Auth::shouldReceive('user')->once()->andReturn($mock);
如果我打电话
Auth::user()->myMethodName(); // It returns 157
但如果我调用(或另一种 Auth 方法)
Auth::id();
// it throws Mockery\Exception\BadMethodCallException : Method Mockery_2_Illuminate_Auth_AuthManager::id() does not exist on this mock object
问题出在哪里?
【问题讨论】:
-
尝试将其添加到基本测试用例的
setUp方法中:\Mockery::getConfiguration()->allowMockingNonExistentMethods(false);。 -
我试过这个。所以我有另一个例外
Mockery\Exception : Mockery's configuration currently forbids mocking the method user as it does not exist on the class or object being mocked
标签: php laravel unit-testing mocking