gpt4 book ai didi

php - 为 Braintree webhook 构建 PHPUnit 测试时间接修改重载属性

转载 作者:行者123 更新时间:2023-11-28 21:26:33 25 4
gpt4 key购买 nike

我正在尝试使用 PHPUnit 构建一个测试来测试我的 Braintree Hook 。我有这个使用下面的 dataProvider 的测试用例:

/**
* @covers SubscriptionExpiredHook::processHook()
* @dataProvider dataProvider
*/
public function testProcessHook($subscriptionId)
{
$subscriptionExpiredHook = new SubscriptionExpiredHook($this->siteManager);

$notification = $this->getMockBuilder('Braintree\WebhookNotification')
->disableOriginalConstructor()
->getMock();

$notification->subscription->id = $subscriptionId;

$router = $this->getRouterMock();

$subscriptionExpiredHook->setSubscription(new Subscription($router));

$response = $subscriptionExpiredHook->processHook($notification);

$this->assertEquals(200, $response->getStatusCode());
}

public function dataProvider()
{
return [
[
'subscription_id' => 'CRM1872',
]
];
}

导致问题的行是这样的:

$subscriptionId = $hook->subscription->id;

...这是我在运行测试时遇到的错误:

1) CRMPiccoBundle\Tests\Braintree\Hooks\SubscriptionExpiredHookTest::testProcessHook with data set #0 ('CRM1872') Indirect modification of overloaded property Mock_WebhookNotification_e65192ec::$subscription has no effect

有没有一种方法可以设置订阅 ID 以允许此测试继续进行,或者我是否以错误的方式看待它?

最佳答案

完全披露:我在 Braintree 工作。如果您还有任何疑问,请随时联系support .

WebhookNotifications 目前不可模拟,尽管使 webhook 测试更稳健是我们的路线图。暂时使用WebhookTesting::sampleNotificationWebhookNotification 类型和 subscription_id 打包一个 sampleNotification。您可以查看示例用法 here .

注意 $webhookNotification->subscription 不会给你一个完整的对象,你必须运行 find针对您的沙箱检索整个订阅。

关于php - 为 Braintree webhook 构建 PHPUnit 测试时间接修改重载属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39138051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com