ITの隊長のブログ

ITの隊長のブログです。Rubyを使って仕事しています。最近も色々やっているお(^ω^ = ^ω^)

Mockeryがわからない

スポンサードリンク

laravel.com

Laravelの中に入っているライブラリらしいが、使い方がいまいちわかっておらぬ。Jestでモックの流れをある程度把握した(つもり)と思っているので、ぱっと見なにをやっているかは読めると思っているが、モックできているのかどうかがわからない。

<?php
// 省略
            $status = Password::broker('user')->sendResetLink([
                'email' => $email
            ]);

こんなコードを書いたとして、モックしたいとする。

<?php
// 省略
        // エラーを発生させる
        Notification::shouldReceive('send')
            ->once()
            ->andThrow(new \Exception());

sendResetLinkの奥深くにあるNotificationをモックする場合はこんな感じ

<?php
// 省略
        Password::shouldReceive('broker')->andReturn($broker = Mockery::mock(PasswordBroker::class));
        /** @var Mockery\mock $broker */
        $broker->shouldReceive('sendResetLink')->andReturn(Password::RESET_THROTTLED);

sendResetLink をモックしたい場合は、 PasswordBroker::sendResetLink をモックするだけじゃなくて、brokerからモックしないといけないことがわかったが、あんまりピンときていないマンです。

一旦メモ。