Stripe具有两种模式,即实时模式和测试模式。这两个代表孤立的环境,测试模式将为某些请求提供模拟响应。在实现条纹集成时,这是一个非常有用的沙盒。它还带有一些陷阱。
当我们在构建Tier时遇到这些问题时,我们决定创建koude0,以使其易于旋转测试和预览环境。
要了解有关
switch
命令以及如何使用它来避免这些问题的更多信息,please read this post and give it a try today。
与部队不一致
测试模式的一个怪癖是它在Stripe仪表板中显示的方式。当您在模式之间移动时很容易错过。
测试时钟通常会在API中隔离一些对象,但是,在测试模式下使用UI时,它们不会以这种方式显示。
例如,如果您列出了API中的所有客户而未指定测试时钟,则只能在没有测试时钟的情况下看到客户,但是在UI中,您会看到所有带有和没有测试时钟的客户。
要区分与测试时钟的对象,与测试时钟关联的对象区分橙色横幅和/或图标表示它们是测试时钟的一部分。这很有帮助,但并未显示出通过测试时钟将哪些对象分组在一起的任何迹象。要看到这一点,您将需要一项新的技能来在新的维度上进行操作和查看,正如我们很快看到的那样:
:在上面的屏幕截图中,有两个测试时钟。哪些客户在同一时钟?您可能可以通过查看创建的字段来推断出与之关联的内容,但是如果我同时将两个时钟推进,或者如果我使用两个几乎相同的时间表进行了两个模拟,该怎么办?在正常的UI模式下,一切都变得模糊。
找出谁与时钟相关联的唯一方法是钻到测试时钟的屏幕。
在UI周围导航时必须牢记这一点,需要新的心理转变。您必须迅速进入并从屏幕上迅速切换,以了解您所看的内容,以及您所看到的事物如何在这个新的,附加的维度中相互联系。
产品和价格碎片
产品和价格与与测试时钟相关的订阅以及与测试时钟无关的订阅保持统一。这意味着当测试时钟清理时不会清理产品和价格(如果您立即清理测试时钟,或者只等待它们独自等待GC)。
这似乎没什么大不了的,但是当您处于试用模式,确定定价模型的扭结或进行集成测试时,这很快就成为摩擦的主要来源和挫败感。那是因为您不能在完全干净的房间中启动新的模拟,因此您必须手动删除每种产品和修改的价格,否则可能会干扰下一个模拟。
钥匙和身份证碰撞
重要的是要注意,如果将产品和价格将是被烧成审核日志,则将不会发生。在这种情况下,您只能存档它们,但是它们的ID和查找键仍保留。这通常会导致跨模拟和测试的碰撞。
关于产品和价格API的我最喜欢的事情之一是您可以携带自己的ID和查找键。这使您可以分配一个唯一的ID或查找键,该密钥只能由单个产品或价格分别使用。
但是,如果您可以删除价格或产品,因为订阅将价格耗尽到审计日志中,那么如果尝试使用相同的查找键或产品创建新价格,则下一个测试运行可能会出现错误具有相同的ID。
我们可以通过在测试中命名我们的键来旁步,但这意味着我们的代码必须非常聪明和小心,以免让这种行为泄漏到生产中,并知道如何从用户收到的请求中倾斜名称空间一直以条纹,或者冒着在写入并有可能读回错误的对象的风险。这也不是理想的。
删除测试数据的手动过程
考虑到上述陷阱,我们可能想考虑擦拭板岩清洁。
不幸的是,没有条纹API从新的测试模式开始。为此,以编程方式需要级联对每个对象的API删除调用,这是一个缓慢而容易出错的过程。
即使做对了,您也可能会遇到问题,即您可能已经删除了已经耗尽价格的价格(在生产中这是一件好事,但现实是对于您的测试环境而言,由于无法完全清洁)。
保留婴儿。忽略沐浴水。
按下该删除测试数据按钮时,您可能会删除有价值的经验教训的文物。在您尝试新的定价和计费方法时,可以用来介绍的课程。
要保留这些参考,一种常见的方法是简单地注册一个新的条纹帐户。也许我们称其为test2â,但这带有新问题:
- 管理额外的API密钥
- 额外的登录凭据管理
这也不能解决抛出我们历史的问题,因为这个新帐户可能最终得到与以前一样有价值的数据,因此我们再次注册了一个新条纹帐户,然后再注册等等。
我们可以通过将所有这些帐户分解到另一天来推迟将我们的帐户划分为下拉。
持续集成
很难想象陷入改变“圣经条纹帐户”中的价格或产品的情况,对CI造成了破坏。通常会发生这种情况,因为曾经的原始帐户现在根据期望条纹看起来会以另一种方式看待的代码失败。
如果工程学已经对更改定价模型进行了夸张,这进一步将弹药添加到他们反对它的论点,因为没有人愿意呼吸该代码,因为担心会破坏它。
制作switch
层是您用于条纹的新电动工具。通过使用switch
命令,您可以避免使用5个测试模式的陷阱,并获得与价格兼容的货币化方法的力量,同时在条纹之上构建强大的新工作流程。这为您提供了两全其美的最好的:等级的力量和条纹的可靠性和覆盖范围。
使用层,您将获得强大的功能,例如switch
以及我们的SDK,计量和功能标记样式权利检查。
如果您还不是层用户,则可以快速,轻松地开始。