0

我正在尝试在 Laravel 控制器中测试此功能:

/**
     * Store a newly created resource in storage.
     *
     * @return Response
     */
    public function store()
    {
        $project = $this->project->create(Input::all());
        if ( $errors = $project->errors()->all() ) {
           return Redirect::route('projects.create')
           ->withInput()
           ->withErrors($errors);

       }
       return Redirect::route('projects.index')
       ->with('flash', Lang::get('projects.project_created'));

   }

我的(错误的)测试如下所示:

public function testStoreFails()
    {
        $this->mock->shouldReceive('create')
            ->once()
            ->andReturn(Mockery::mock(array(
                    false,
                    'errors' => array()
                    )));
        $this->call('POST', 'projects');
        $this->assertRedirectedToRoute('projects.create');
        $this->assertSessionHasErrors();
    }

问题是,基本上,当验证失败时,Ardent 将 $project 设置为 false,但它也会在同一个对象上设置错误,可以使用 ->errors()->all() 检索这些错误。

我很迷茫,试图找出在模拟中返回什么。

注意:构造函数注入模型:

public function __construct(Project $project)
    {
        $this->project = $project;

        $this->beforeFilter('auth');
    }
4

1 回答 1

1
于 2013-12-09T20:49:14.567 回答