我正在做一些單元測試,並且想測試這麼基本的東西。在我的測試中,我使用Illuminate\Foundation\Testing\WithoutEvents
。BadMethodCallException:方法Mockery_0_Illuminate_Contracts_Events_Dispatcher :: listen()在這個模擬對象上不存在
當用戶註冊時,他或她會得到一封激活郵件。首先,我使用了一個觀察者,但得出的結論是,當使用WithoutEvents
編寫爲here和here時,Laravel不禁止觀察者。然後,我將我的代碼更改爲「傳統」事件和聽衆。
EventServiceProvider仍然默認,除了$listen
屬性:
/**
* The event listener mappings for the application.
*
* @var array
*/
protected $listen = [
'App\Events\UserCreated' => [
'App\Listeners\CreateActivation'
],
];
當我調度事件:
event(new UserCreated($user));
和示例測試(其失敗):
class ExampleTest extends TestCase
{
use DatabaseMigrations, WithoutEvents;
public function testExample()
{
$user = factory(User::class)->create();
}
}
錯誤:
我不知道爲什麼它的崩潰。任何幫助深表感謝。另外,如果我需要提供更多代碼,請告訴我。因爲我不確定問題是由什麼引起的。
嘗試添加'$這個 - > withoutEvents();'在你的測試用例中'$ user = factory(User :: class) - > create();'! – Maraboc
我已經在使用'WithoutEvents'特徵,它相當於'$ this-> withoutEvents()',但是對於所有的測試。 –