Laravel Model与存储库和Mockery绑定失败

时间:2015-06-17 17:38:58

标签: php unit-testing laravel mockery

我正在尝试使用Mockery测试我的服务。我已将路由参数{user}绑定到我的服务:

$repo = 'Services\\UserService';
$router->bind('user', function($id, $route) use($repo) {
    return $this->app->make($repo)->get($id);
});

当我进行第一次测试时,它会成功。

$mocked = Mockery::mock('UserService');
\App::instance('UserService', $mocked);

$mocked->shouldReceive('create')
       ->once()
       ->andReturn($user);

当我的下一次测试运行时,它失败

$mocked = Mockery::mock('UserService');
\App::instance('UserService', $mocked);

$mocked->shouldReceive('update')
       ->once()
       ->andReturn('1');

转发router->bind方法

dump(get_class($this->app->make($repo));

我第一次获得Services\UserService但第二次获得Mockery_0_Services_UserService然后出现此错误:

testing.ERROR: exception 'BadMethodCallException' with message 
'Method Mockery_0_Services_UserService::get() does not exist on this mock object

我认为它与App::instance方法有关,但我不确定。

这可能是什么问题?

0 个答案:

没有答案