Stripe webhook 测试 returns 执行时为空 table,但适用于 stripe 的 webhook 测试器
Stripe webhook test returns empty table on execution, but works on stripe's webhook tester
我们的测试套件有问题。
当我们 运行 使用测试套件时,我们从 PHPUnit 得到一个 'The table is empty...' 响应。
我们知道它有效,因为我们还使用 Stripe 的 'Send a web hook' 测试功能进行了测试,该功能有效,并且响应按预期存储。
我们的代码在这里:
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',
]);
}
收到的回复是:
Failed asserting that a row in the table [stripe_webhooks] matches the
attributes {
"stripe_created_at": 1326853478,
"type": "account.external_account.created" }.
The table is empty..
如果我们删除
$this->expectsJobs([StoreStripeWebHookJob::class]);
测试成功。显然 expectsJob() 调用应该在它所在的位置。
ExpectsJob 也拦截作业。很像 expectsException。从你干净的命名约定来看 "StoreStripe..." - 我会说在这些测试环境下它真的没有存储。
您需要单独测试您的 endpoint/controller 是否正在排队作业...以及该作业是否正在存储数据。 2 项测试。
我们的测试套件有问题。 当我们 运行 使用测试套件时,我们从 PHPUnit 得到一个 'The table is empty...' 响应。
我们知道它有效,因为我们还使用 Stripe 的 'Send a web hook' 测试功能进行了测试,该功能有效,并且响应按预期存储。
我们的代码在这里:
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',
]);
}
收到的回复是:
Failed asserting that a row in the table [stripe_webhooks] matches the attributes { "stripe_created_at": 1326853478, "type": "account.external_account.created" }.
The table is empty..
如果我们删除
$this->expectsJobs([StoreStripeWebHookJob::class]);
测试成功。显然 expectsJob() 调用应该在它所在的位置。
ExpectsJob 也拦截作业。很像 expectsException。从你干净的命名约定来看 "StoreStripe..." - 我会说在这些测试环境下它真的没有存储。
您需要单独测试您的 endpoint/controller 是否正在排队作业...以及该作业是否正在存储数据。 2 项测试。