Mocking Stripe and AWS APIs in CodeIgniter


Mocking Stripe and AWS APIs in CodeIgniter

我为一个用CodeIgniter 2.x构建的应用程序编写了集成测试。这些测试是Selenium + PhpUnit的组合。

到目前为止,我在应用程序中使用了Stripe和Amazon的测试帐户,显然测试使用的是相同的帐户。我想知道如何为这些api创建Mock对象,以便我可以避免实时数据创建/删除。

对于Stripe,我找不到任何用于PHP的mock库。因此,存根响应和请求似乎是一个不错的选择。但是,即使我在测试中使用存根代替真实数据,在特定集成测试期间的应用程序仍然需要正确的信息才能通过。我如何告诉应用程序使用假数据?

另外,我想知道它通常是一个好主意,模拟对象在集成测试,即在web应用程序的上下文中?

这是Stripe自己为模拟Stripe而开发的工具。

https://github.com/stripe/stripe-mock

它在本地机器上运行一个服务器,以类似于stripe的方式响应API调用。您可以在验收测试

中尝试这样做。

对于PHP单元测试,您最好使用像AspectMock这样的东西——尽管配置有点棘手。你可以预先指定对Stripe资源的调用(例如'Stripe'Stripe::setApiKey或'Stripe'Customer::retrieve)应该返回什么,而不需要击中Stripe服务器——你也可以测试你的应用程序代码是否试图进行这些调用。您还可以模拟失败,以测试您的应用程序是否正常运行,例如,Stripe down。