私はクラスを作成するためにphpSpecを使用する作業を始めようとしています。私は、イベントハンドラの1つでハンドルメソッドをテストすることに遭遇しました。phpSpecなしbeCalled([配列:0])matcherがnullのために見つかりました
マイスペック:
use App\Order;
use App\Models\Payments\Payment;
use App\Services\Payments\PaymentService;
use App\Events\Payments\AccountPayment;
class RecordPaymentTransactionSpec extends ObjectBehavior
{
function let(PaymentService $paymentService)
{
$this->beConstructedWith($paymentService);
}
function it_is_initializable()
{
$this->shouldHaveType('App\Handlers\Events\Payments\RecordPaymentTransaction');
}
function it_should_record_payment_transaction(AccountPayment $event)
{
$this->paymentService->recordPayment($event)->shouldBeCalled();
}
}
そして、この私の実装:
class RecordPaymentTransaction {
public $paymentService;
/**
* Create the event handler.
*
* RecordPaymentTransaction constructor.
* @param PaymentService $paymentService
*/
public function __construct(PaymentService $paymentService)
{
$this->paymentService = $paymentService;
}
/**
* Handle the event.
*
* @param AccountPayment $event
* @return void
*/
public function handle(AccountPayment $event)
{
$this->paymentService->recordPayment($event);
}
}
しかし、私はこのエラーを取得しておいてください。
- it should record payment transaction
no beCalled([array:0]) matcher found for null.
は、私がここで間違ってやっているかを見ることができません、 助けてください。
これはうまくいきました。 –
@AndresZapataあなたを歓迎します;) – DonCallisto