为 Stripe 创建 Mock 还是在 Stripe 对象上使用 Stub?

Create a Mock for Stripe or use a Stub on Stripe object?

我正在为使用 StripeBackbone 应用编写测试。我正在使用 mocha-phantomjs 到 运行 测试。在我的 index.html 文件中,我 <script src="https://js.stripe.com/v2/" type="text/javascript"></script> 获取 Stripe 的代码。 但是,当我 运行 测试时,出现错误: ReferenceError: Can't find variable: Stripe,这是有道理的,因为我没有运行使用 ssl 证书来执行测试命令。

我通过创建一个本地 js 文件并将 stripe's 压缩代码复制到其中来实现它的工作,从而超越了对 ssl 证书的需要并且我的测试通过了。

但是我的问题是这是否是最佳做法?

我应该创建一个 Stripesinon 模拟对象并使用它,还是将 Stripe 对象存根以防止对Stripe API?

我认为这里最好记住的是关注点分离。

Stripe 是第 3 方服务,因此我认为在单元测试中使用此类服务​​不是最明智的选择。

这些是单元测试 - 可能是针对您的 backbone 控制器;所以测试应该严格只测试控制器代码。

因此,我将模拟您的控制器所需的必要对象和方法。同样这样,你的单元测试依赖性更清晰。