Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 拉威尔5和嘲弄,不是吗';行不通_Php_Laravel_Laravel 5_Mockery - Fatal编程技术网

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')
然后您可以断言您的
控制器->方法()
返回
编译视图
。如果您提供您的测试和控制器方法,我可以提供更多细节。