使用Laravel 5[phpunit]的测试方法和控制器

使用Laravel 5[phpunit]的测试方法和控制器,php,unit-testing,phpunit,laravel-5,Php,Unit Testing,Phpunit,Laravel 5,我正在为我的项目做测试,有人能给我演示一下如何编写测试或者给我一些好的视频课程来学习测试吗 在我的示例中,我尝试测试这一部分: public function getProjectsForUser(){ if(Auth::user() -> admin_id == NULL){ $this->id = Auth::user() -> id; }else{ $this->id = Auth::u

我正在为我的项目做测试,有人能给我演示一下如何编写测试或者给我一些好的视频课程来学习测试吗

在我的示例中,我尝试测试这一部分:

public function getProjectsForUser(){
        if(Auth::user() -> admin_id == NULL){
            $this->id = Auth::user() -> id;
        }else{
            $this->id = Auth::user() -> admin_id;
        }
        $projects = User::findOrFail(Auth::user() -> id)->projects()->where('admin_id', '=', $this->id)->get();

        $role = User::findOrFail(Auth::user() -> id)->roles;

        $users = User::where('admin_id', '=', $this->id)->lists('name','id');

        return array('projects' => $projects,'users' => $users,'roles' => $role );
}
这是我的模型Project.php

这是我的项目控制器:

public function project(Project $projects){
            $this -> projects = $projects ->getProjectsForUser();
            return view('projects',$this -> projects);
        }
这是我的测试,检查用户是否登录

public function testHome()
        {
            $this->be(User::find(1));
            $response = $this->call('GET', '/projects');
            //CHECK IF AUTH USER
            $this->assertTrue($response->isOk());

    }

现在我需要检查数组中$project、$role、$users的值是否正确。

您可以使用
assertViewHas()
断言应该传递给视图的值。例如:

public function testHome(){
    $this->be(User::find(1));
    $response = $this->call('GET', '/projects');
    //CHECK IF AUTH USER
    $this->assertTrue($response->isOk());

    $this->assertViewHas('projects', 'expected value for projects');
    $this->assertViewHas('users', 'expected value for users');
    $this->assertViewHas('roles', 'expected value for roles');
}
顺便说一句:如果没有传递第二个参数,该方法将仅断言变量存在,但不会比较值

要使用不同的语法实现相同的功能,可以使用
assertViewHasAll()
并将所有内容作为数组传递:

$this->assertViewHasAll([
    'projects' => 'expected value for projects',
    'users' => 'expected value for users',
    'roles' => 'expected value for roles'
]);

如果用户已更改,我如何进行友好检查?如果用户是管理员,我需要检查表单是否存在,如果用户是工作者,我需要检查字符串是否正常工作,如果用户未进行身份验证,则检查是否重定向到/您可以使用
assertRedirectTo('/')
断言重定向。我不认为检查视图的实际内容是您应该做的事情,尽管您可以使用
$response->getoriginalcontent()
@lukasgeiter()访问html对不起,也许您可以帮助解决我的
assertViewHasAll
问题