Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.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 Laravel 5.0用户口才模型模拟_Php_Laravel_Testing_Phpunit_Mockery - Fatal编程技术网

Php Laravel 5.0用户口才模型模拟

Php Laravel 5.0用户口才模型模拟,php,laravel,testing,phpunit,mockery,Php,Laravel,Testing,Phpunit,Mockery,一段时间以来,我一直试图在我的Laravel应用程序的控制器测试中使用mockry,但似乎没有任何效果 UserController.php: class UserController extends Controller { protected $user; public function __construct(User $user) { $this->user = $user; } /** * Display a

一段时间以来,我一直试图在我的Laravel应用程序的控制器测试中使用mockry,但似乎没有任何效果

UserController.php:

class UserController extends Controller
{
    protected $user;

    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Display a listing of the resource.
     * GET /user
     *
     * @return Response
     */
    public function index()
    {
        $users = $this->user->orderBy('created_at', 'desc')->paginate(6);
        return view('users.index', compact('users'));
    }
}
我的测试:

class UserControllerTest extends TestCase {

    protected $user;
    protected $builder;
    protected $paginator;

    public function setUp()
    {
        parent::setUp();
    }

    public function tearDown()
    {
        Mockery::close();
    }

    /**
     * A basic functional test example.
     *
     * @return void
     */
    public function testIndex()
    {
        $this->user = Mockery::mock('App\User');

        $this->user
            ->shouldReceive('orderBy')
            ->once()
        ;

        $this->app->instance('App\User', $this->user);
        $response = $this->call('GET', 'users');

        $this->assertEquals(200, $response->getStatusCode());
    }

}
当我运行PHPUnit时,我得到输出:

[Symfony\Component\Debug\Exception\FatalErrorException]
对非对象调用成员函数paginate()

当我添加->andReturn($this->user)时:

我得到的PHPUnit输出为:

Failed asserting that 500 matches expected 200.
Expected :200
Actual   :500
当我打印响应时,其中有以下错误:

Method Mockery_0_App_User::paginate() does not exist on this mock object
当我模拟paginate()函数时,它只是在视图中的“getIterator”函数上再次失败

那么我做错了什么?
我在这里看了教程,阅读了文章和相关答案,但还没有找到解决方案

您必须模拟分页,并且它必须返回一个用户数组

您的期望应该如下所示:

$this->user
    ->shouldReceive('orderBy->paginate')
    ->once()
    ->andReturn($userArray);

其中,
$userArray
是一个数组,其中的用户位于您将在视图中使用它的表单上。我想这就是为什么会出现“getIterator”错误,可能是因为返回了无法正确迭代的内容。

Paginate对嘲弄持某种态度,哈!
$this->user
    ->shouldReceive('orderBy->paginate')
    ->once()
    ->andReturn($userArray);