私はいくつかのユニットテストを行い、そのような基本的なテストをしたいと思います。私のテストでは、Illuminate\Foundation\Testing\WithoutEvents
を使っています。BadMethodCallException:メソッドMockery_0_Illuminate_Contracts_Events_Dispatcher :: listen()がこのモックオブジェクトに存在しません
ユーザーが登録すると、アクティベーションメールが届きます。まずObserverを使ってみましたが、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();
}
}
エラー:
私はそれがクラッシュしている理由手掛かりをしたん。どんな助けも大歓迎です。また、より多くのコードを提供する必要がある場合は、私に知らせてください。なぜ私は問題が起こっているのか分からないからです。
:あなたがアクティブにユーザーを作成することができますテストで、今ので
を>あなたのテストケースの '$ user = factory(User :: class) - > create();'の前に> withoutEvents(); ' – Maraboc
私は '$ this-> withoutEvents()'に相当する 'WithoutEvents'特性を既に使用していますが、すべてのテストで使用しています。 –