使用 Paypal REST SDK 最佳实践进行单元/模拟测试

Posted

技术标签:

【中文标题】使用 Paypal REST SDK 最佳实践进行单元/模拟测试【英文标题】:Unit/Mock testing with Paypal REST SDK best practices 【发布时间】:2019-02-19 13:26:11 【问题描述】:

我正在使用Paypal REST SDK for Java 开发一个应用程序。我正在尝试为我的应用程序开发测试。问题是,Paypal 在their documentation for the functionality I'm trying to use 中建议的开发模式对于允许单元测试的存根和挂钩非常适得其反。我不希望将所有 Paypal API 结构参数都添加到我的方法中,因为这会使我的方法签名膨胀,但我希望能够测试我的代码。其他人使用 Paypal REST SDK 测试应用程序时使用了哪些最佳实践或解决方案?

【问题讨论】:

【参考方案1】:

我认为这是一个很好的问题,但是我看不出他们的 API 如何对您的测试策略产生反作用。您有任何特定的编码问题吗?然后将该代码添加到您的问题中。

一般来说,您希望将所有 3-paty 集成的处理隔离到系统的一小部分(无需在您自己的方法签名中使用它们的类);然后您可以在需要时模拟系统的该部分。如果你愿意,你可以单独测试你是否有正确的集成(可能通过模拟协议)。

【讨论】:

使用 Mockito,我想检查诸如支付请求的参数是否与我期望的参数相匹配,正在设置的数据结构是我'我期待设置等。但是,在提供的教程中(在 OP 中链接),Payment 对象是在方法内部创建的,所以模拟它(所以我可以在单元测试中检查和验证它​​的内容)不是可能的。还有其他我应该使用的最佳做法吗? 出于讨论的目的,您可以假设我的代码与教程代码匹配。尽管我在我的 Payment 对象中添加了几个附加字段,但我或多或少地从教程中复制粘贴。可以说,所有的“业务逻辑”都与教程完全相同。

以上是关于使用 Paypal REST SDK 最佳实践进行单元/模拟测试的主要内容,如果未能解决你的问题,请参考以下文章

PayPal REST SDK 未在 execute() 上返回正确状态

使用 REST api 执行 PayPal 付款

使用 paypal-rest-sdk 时出错。请帮助我

PayPal REST SDK 已弃用

使用 PayPal REST SDK 和 PayPal-Python-SDK 时未发送或接收资金

贝宝 sdk '类 'PayPal\Rest\ApiContext' 未找到'