【发布时间】:2015-01-26 07:36:56
【问题描述】:
我正在尝试使用 Laravel 更多地理解测试和嘲弄。我有一个存储库模式设置,我的控制器用户。我想测试我的基本getAllUsers()method:
public function test_get_all_users_method()
{
$repo = Mockery::mock('Acme\Repositories\User\UserRepository');
$repo->shouldReceive('all')->once()->andReturn('foo');
$controller = new Acme\Controllers\Api\UserController($repo);
$response = $controller->getComponents();
$this->assertEquals('foo', $response);
}
据我了解,我在嘲笑我的 UserRepository,我希望我的 UserRepository 能够命中 all() 方法。这会返回一些虚拟数据,我希望在我的响应输出中看到这一点。
所以效果很好。 all() 方法存在于我的存储库的 Eloquent 实现中。但是,如果我删除 all() 方法,测试仍然通过... 为什么会这样?测试肯定会失败。
如果这是正常的,我很难理解为什么要这样测试我的控制器,因为我可以将任何旧方法名称传递给它,即使它存在与否。
干杯
【问题讨论】: