mockery-> shouldReceive()传递的时候不应该?

 小色米虫_524 发布于 2023-02-11 13:32

我正在使用phpunit和mockery学习laravel中的单元测试.我目前正在尝试测试UsersController :: store().

我正在嘲笑用户模型并使用它来测试索引方法,这似乎有效.当我取出$ this-> user-> all()时,测试失败,当它进入时.

在测试store方法时,我使用mock来测试用户模型是否接收到validate()一次.store方法为空,但测试通过.为了简单起见,我遗漏了班级中不相关的部分

user = $user;
    }
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        $users = $this->user->all();

        return View::make('users.index')
        ->with('users', $users);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return Response
     */
    public function create()
    {
        return View::make('users.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        //
    }

}

UserControllerTest.php

mock = m::mock('BaseModel', 'User');
    }

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

    public function testIndex()
    {
        $this->mock
            ->shouldReceive('all')
            ->once()
            ->andReturn('All Users');
        $this->app->instance('User', $this->mock);
        $this->call('GET', 'users');
        $this->assertViewHas('users', 'All Users');
    }

    public function testCreate()
    {
        View::shouldReceive('make')->once();
        $this->call('GET', 'users/create');
        $this->assertResponseOk();
    }

    public function testStore()
    {

        $this->mock
            ->shouldReceive('validate')
            ->once()
            ->andReturn(m::mock(['passes' => 'true']));
        $this->app->instance('User', $this->mock);
        $this->call('POST', 'users');
    }


}

Wouter J.. 13

默认情况下,Mockery是一个存根库,而不是一个模拟库(由于它的名称而令人困惑).

这意味着->shouldReceive(...)默认情况下为"零次或多次".使用时->once(),你说它应该被称为零或一次,但不是更多.这意味着它将永远通过.

当你想断言它被调用一次时,你可以使用->atLeast()->times(1)(一次或多次)或->times(1)(恰好一次)

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有