我正在使用Laravel框架开发Web应用程序。我现在正在创建一个自定义注册控制器,该控制器将覆盖RegistersUsers特征中的某些方法。但是不会调用create方法。在下面查看我到目前为止所做的事情。
我用以下代码创建了一个名为CustomerRegistarController的控制器
class CustomerRegisterController extends Controller
{
use RegistersUsers;
public function __construct()
{
$this->middleware('guest');
}
public function showRegistrationForm()
{
return view('auth.customer_register');
}
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string'],
'surname' => ['required', 'string'],
'email' => ['required', 'string', 'email', 'unique:users'],
'password' => ['required', 'string', 'min:6', 'confirmed'],
'code' => ['required', 'string' ],
]);
}
protected function create(array $data)
{
//code for creating the customer
return $user;
}
protected function redirectTo()
{
return route('customers.index');
}
}
这是发布路线
Route::post('customer/register', 'Auth\CustomerRegisterController@register')->name('customer.register.store');
我正在像这样对注册逻辑进行单元测试。
function test_custom_can_register()
{
$body = [
'name' => $this->faker->name,
'surname' => $this->faker->name,
'email' => $this->faker->unique()->email,
'password' => $this->faker->password,
'code' => $this->faker->randomNumber()
];
$this->post(route('customer.register.store'), $body)
->assertStatus(Response::HTTP_FOUND);
$this->assertDatabaseHas('users', [
'email' => $body['email'],
]);
}
运行测试时,未在数据库中创建用户,因为未调用create方法。为什么?有什么问题,我该如何解决?
当我从UI中注册时被调用,只是在单元测试中不起作用。我该如何测试?