我已经使用 Laravel 5.7 有一段时间了,但是,我对 TDD 完全陌生。
如果创建了用户模型,register则会触发一个事件。但是为什么当我使用工厂创建用户模型时它没有被触发?
我的工厂:
$factory->define(App\User::class, function (Faker $faker) {
return [
'first_name' => $faker->name,
'sur_name' => $faker->name,
'phone' => $faker->phoneNumber,
'birthday' => Carbon::now()->subYears(25)->toDateTimeString(),
'gender' => 'm',
'email' => $faker->unique()->safeEmail,
'password' => '$2y$10$TKh8H1.PfQx37YgCzwiKb.KjNyWgaHb9cbcoQgdIVFlYg7B77UdFm', // secret
'remember_token' => str_random(10),
];
});
Run Code Online (Sandbox Code Playgroud)
和我的测试,失败了:
public function test()
{
$this->withoutExceptionHandling();
Event::fake();
$user = factory(User::class)->create();
Event::assertDispatched(Registered::class);
}
Run Code Online (Sandbox Code Playgroud)
当使用 Laravel 提供的 auth 脚手架时,Registered 事件由控制器调度(特别register()是Illuminate\Foundation\Auth\RegistersUserstrait 中的方法。由于您不是通过控制器发出请求,因此它不会调度事件。
| 归档时间: |
|
| 查看次数: |
1712 次 |
| 最近记录: |