hdi*_*fen 6 php laravel eloquent laravel-5
我刚刚写了一个 laravel Observer。它附加到一个Company模型,因为我想了解创建公司的用户。我还有一大套其他测试,它们使用工厂来设立公司。这些测试现在失败了,因为观察者需要用户,但调用工厂时没有用户登录。
公司观察者.php
class CompanyObserver {
function created(Company $company) {
info('USER ' . Auth::user()->id . ' created the new company ' . $company->id . '.';
}
}
Run Code Online (Sandbox Code Playgroud)
旧测试.php
Class OldTests {
function testSomething() {
// Now fails because observer is triggered but no use is logged in.
$company = factory(Company::class)->create();
// Random request
$this->post('getCompany/' . $company->id)->assertStatus(200);
}
}
Run Code Online (Sandbox Code Playgroud)
我如何处理需要用户登录才能进行旧测试的新观察者?我必须去改变所有旧的测试吗?
小智 7
在 Laravel 8 中,这应该可行。
$company = Company::withoutEvents(function () {
return Company::factory()->create();
});
Run Code Online (Sandbox Code Playgroud)