Php 拉威尔5和嘲弄,不是吗';行不通
我一直在逐行调试,当我尝试将存储库绑定到模拟时,似乎出现了错误:Php 拉威尔5和嘲弄,不是吗';行不通,php,laravel,laravel-5,mockery,Php,Laravel,Laravel 5,Mockery,我一直在逐行调试,当我尝试将存储库绑定到模拟时,似乎出现了错误: $mock = Mockery::mock('MyNamespace\Repositories\MyModelInterfaceRepository'); // Error is in this line $this->app->instance('MyNamespace\Repositories\MyModelInterfaceRepository', $mock); 我已经绑定了repo接口和实现,它在浏览器上
$mock = Mockery::mock('MyNamespace\Repositories\MyModelInterfaceRepository');
// Error is in this line
$this->app->instance('MyNamespace\Repositories\MyModelInterfaceRepository', $mock);
我已经绑定了repo接口和实现,它在浏览器上工作,它只在测试用例中失败,给我一个错误500
我的控制器的构造函数如下所示:
use MyNamespace\Repositories\MyModelInterfaceRepository;
class MyController extends Controller {
public function __construct(MyModelInterfaceRepository $repo) {
$this->repo = $repo;
}
....
有什么想法吗
编辑:
。这似乎与视图没有接收到正确的foreach
参数有关,这可能是由于模拟调用返回null
引起的
对于同样遇到此问题的任何人,在本例中,控制器是否应验证返回值是否为null(考虑到如果没有记录,Elounce将返回空数组,但决不为null),或者,
mocky
是否应该确保它返回一个值?查看laravel日志存储/logs/laravel.log
并从中复制粘贴错误消息。Mock返回null,因此视图崩溃。多亏了这一点,我对Laravel还不熟悉,所以我还不知道日志保存在哪里。继续检查您在杂志/index.blade.php
中传递给foreach的变量。您可以在blade视图中使用{{dd($var)}}
来实现这一点。我在听一个教程,那个家伙只是嘲笑回购协议,而不是返回的对象。所以我想我知道必须模拟返回的对象,这样视图就不会崩溃。。。雄辩的模型可以被模拟吗?如果您试图隔离一个控制器方法,那么您也可以用类似的东西模拟视图:view::shouldReceive('make')->once()->with('some-view-name',array('results'=>'some response from repository'))->andReturn('compiled view')
然后您可以断言您的控制器->方法()
返回编译视图
。如果您提供您的测试和控制器方法,我可以提供更多细节。