为 Stripe 创建 Mock 还是在 Stripe 对象上使用 Stub?
Create a Mock for Stripe or use a Stub on Stripe object?
我正在为使用 Stripe
的 Backbone
应用编写测试。我正在使用 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 证书的需要并且我的测试通过了。
但是我的问题是这是否是最佳做法?
我应该创建一个 Stripe
的 sinon
模拟对象并使用它,还是将 Stripe
对象存根以防止对Stripe
API?
我认为这里最好记住的是关注点分离。
Stripe 是第 3 方服务,因此我认为在单元测试中使用此类服务不是最明智的选择。
这些是单元测试 - 可能是针对您的 backbone 控制器;所以测试应该严格只测试控制器代码。
因此,我将模拟您的控制器所需的必要对象和方法。同样这样,你的单元测试依赖性更清晰。
我正在为使用 Stripe
的 Backbone
应用编写测试。我正在使用 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 证书的需要并且我的测试通过了。
但是我的问题是这是否是最佳做法?
我应该创建一个 Stripe
的 sinon
模拟对象并使用它,还是将 Stripe
对象存根以防止对Stripe
API?
我认为这里最好记住的是关注点分离。
Stripe 是第 3 方服务,因此我认为在单元测试中使用此类服务不是最明智的选择。
这些是单元测试 - 可能是针对您的 backbone 控制器;所以测试应该严格只测试控制器代码。
因此,我将模拟您的控制器所需的必要对象和方法。同样这样,你的单元测试依赖性更清晰。