我正在尝试在 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');
}