我试图以最简单的方式测试存储方法。我不一定需要Mockery,我可以实际添加到数据库中。无论如何,我无法让Mockery工作。
现在我有了这个:
public function testStore()
{
$data = ['name' => 'TestClub', 'code' => 'TCL'];
Input::replace($data);
$this->route('POST', 'clubs.store', $Input::all());
$this->assertResponseOk();
}
这是我的控制器方法:
public function store() {
$validator = Validator::make($data = Input::all(), Club::$rules);
if ($validator->fails()) {
return Redirect::back()->withErrors($validator)->withInput();
}
Club::create($data);
return redirect(Session::get('backUrl'));
}
我收到返回代码500,我不明白为什么。我可以以某种方式看到它发送的请求吗?
我正在使用Laravel 5.0
答案 0 :(得分:0)
首先,永远不要使用Input::all()
。您可能不知道提交时表单中的内容,而是使用only
。
但是,如果可以帮助,也不应该在Controller中放置验证逻辑。相反,您应该创建一个新的Request
并将验证规则放在rules
数组中。我们来看看
php artisan make:request StoreUserRequest
然后在此请求中,您将return true
添加到您的authorize
函数(或者您需要识别用户是否应该能够发出请求的任何逻辑),然后是您的规则到rules()
函数(对规则函数中的数组,更具体)。
现在将新的StoreUserRequest
添加为store()
函数的第一个参数的依赖项。
public function store(App\Http\Requests\StoreUserRequest $request)
现在使用$request->only()
方法恢复您的字段。
Club::create($request->only(['field1', 'field2', 'blob1', 'text1']);
此外,请确保您希望添加数据的任何字段都列在protected $fillable
模型的Club
数组中。
protected $fillable = ['field1', 'field2', 'blob1', 'text1'];
这应该这样做。