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)
我宁愿不依赖远程库来进行测试,也不想反对依赖源代码的条件首选方法.什么是最好的方法来解决这个问题?
要模拟Stripe依赖关系,您必须Stripe使用要调用的函数创建一个新对象:
var Stripe = {createToken: sinon.spy()}
form.submit();
expect(Stripe.createToken).toHaveBeenCalled();
Run Code Online (Sandbox Code Playgroud)