Тест Stripe webhook возвращает пустую таблицу при выполнении, но работает на тестере stripe webhook - PullRequest
0 голосов
/ 26 февраля 2020

У нас проблема с нашим набором тестов. Когда мы запускаем это с помощью набора тестов, мы получаем ответ «Таблица пуста ...» от PHPUnit.

Мы знаем, что это работает, так как мы также тестировали с помощью тестовой функции Stripe «Отправить веб-ловушку» который работает, и ответ сохраняется как ожидалось.

Наш код здесь:

public function test_webhook_received()
{
    $this->expectsJobs([StoreStripeWebHookJob::class]);
    $this->postJson('/stripeHook', [
        'created' => 1326853478,
        'livemode' => false,
        'id' => 'evt_00000000000000',
        'type' => 'account.external_account.created',
        'object' => 'event',
        'request' => NULL,
        'pending_webhooks' => 1,
        'api_version' => '2019-12-03',
        'data' => [
            'object' => [
                'id' => 'ba_00000000000000',
                'object' => 'bank_account',
                'account' => 'acct_00000000000000',
                'account_holder_name' => 'Jane Austin',
                'account_holder_type' => 'individual',
                'bank_name' => 'STRIPE TEST BANK',
                'country' => 'US',
                'currency' => 'gbp',
                'fingerprint' => '8JXtPxqbdX5GnmYz',
                'last4' => '6789',
                'metadata' => [],
                'routing_number' => '110000000',
                'status' => 'new',
            ],
            ],
        ]);

        $this->assertDatabaseHas('stripe_webhooks', [
            'stripe_created_at' => 1326853478,
            'type' => 'account.external_account.created',
        ]);
}

Получен ответ:

Не удалось утверждать, что строка в таблице [stripe_webhooks] соответствует атрибутам {"stripe_created_at": 1326853478, "тип": "account.external_account.created"}.

Таблица пуста ..

Если мы удалим

$this->expectsJobs([StoreStripeWebHookJob::class]);

, тесты пройдут успешно. Очевидно, что вызов expectedJob () должен быть там, где он есть.

1 Ответ

1 голос
/ 26 февраля 2020

ExpectedJob также перехватывает задание. Так же, как ожидает Exception. Судя по вашему соглашению о чистых именах "StoreStripe ..." - я бы сказал, что в этих условиях тестирования он действительно не сохраняется.

Вам нужно будет отдельно проверить, что ваша конечная точка / контроллер ставит в очередь задание ... и что работа хранит данные. 2 теста.

...