Jasmine测试需要外部库

Eri*_*c C 5 javascript jquery backbone.js jasmine

我想知道什么是最佳实践或至少使用Jasmine来测试需要在页面加载时调用的远程库的javascript的实践,而不是在应用程序中.

更具体地说,我正在创建一个使用条带处理付款的骨干视图.Stripe建议您从他们的服务器加载他们的布局中的javascript.

但我的测试没有我的布局,所以当我尝试这样做

it("calls stripe token creation", function() {
  stripeSpy = spyOn(Stripe, "createToken");
  form.submit();
  expect(stripeSpy).toHaveBeenCalled();
});
Run Code Online (Sandbox Code Playgroud)

它给出了错误.

Stripe is not defined
Run Code Online (Sandbox Code Playgroud)

我宁愿不依赖远程库来进行测试,也不想反对依赖源代码的条件首选方法.什么是最好的方法来解决这个问题?

And*_*rle 3

要模拟Stripe依赖关系,您必须Stripe使用要调用的函数创建一个新对象:

var Stripe = {createToken: sinon.spy()} 
form.submit();
expect(Stripe.createToken).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)