在Jasmine测试中模拟StripeCheckout

时间:2016-06-18 09:47:34

标签: jasmine stripe-payments karma-jasmine

我正在为我的Javascript应用程序编写Jasmine测试。一个主要的时间接收器一直在测试我的代码,这取决于StripeCheckout。 Stripe不希望您离线使用它。我意识到我应该嘲笑这项服务,但这在Jasmine中并不容易。

我怎样才能嘲笑"定制" (而不是"简单")使用StripeCheckout

我尝试使用spies,就像这样,

var StripeCheckout = jasmine.createSpyObj('StripeCheckout', ['configure']);

但我认为创建的对象需要附加到全局对象(窗口)。

  • 所以,我可以add an object to the global object。这工作, 但感觉很蹩脚。

  • 另一个选择可能是告诉 Karma加载 网页上的页面。这对我有用,但似乎很蹩脚 网络测试请求。

1 个答案:

答案 0 :(得分:1)

我不确定你是否已经想到这一点但是一个简单的方法就是为StripeCheckout创建一个简单的模拟实现。这样的事情应该有效。

beforeEach(function() {
    module(function($provide) {
        $provide.factory('StripeCheckout', function() {
            //your mocked custom implementation goes here

            configure: function() {
                //do something   
            }
        }
    }

    inject(function($injector) {
        StripeCheckoutMock = $injector.get('StripeCheckout');
    }
)

这样您就不会发出请求来运行测试。测试将使用您已设置的模拟服务。