首页 > 解决方案 > 如何在 karma Angular8 中对 StripeJs 进行单元测试

问题描述

我正在尝试对使用StripeJS.

我将它导入到文件“ng-app.js”中:

stripe: /*@ngInject*/ function ($ocLazyLoad) {
                  return $ocLazyLoad.load({
                    type: 'js',
                    path: 'https://js.stripe.com/v3/'
                  });
                }

在我的支付组件 ( payment.component.ts) 中,我使用:

import {StripeJS} from 'stripejs';
import {ElementFactory, OnChange, StripeElement} from 'stripejs/element';

并且:

constructor(private fb: FormBuilder, private store: Store<AppState>) {
    this.stripe = window.Stripe(window.properties.stripePKs[this.carrier]);
    this.createStripeElements(this.stripe.elements());
  }

但我不知道如何StripeJS模拟payment.component.spec.ts.

组件是undefined我做的时候component = fixture.componentInstance;

我的要求是知道如何将StripeJS测试中的 组合为 Mock 或不组合,以便我成功地为其余测试创建组件。

标签: angularkarma-jasminekarma-runner

解决方案


我从来没有使用过 stripeJS,所以我会给你一个一般性的答案,如果你需要一个具体的例子,然后在这里或在 github 上发布你的代码,我们可以为你提供更多细节。在单元测试之前,您需要了解 jasmine 和 Karma 是如何工作的。在单元测试的导入部分,确保已导入 stripeJS。在你的 UT 构造函数中有类似 mockstripejs:Mock<StripeJS> 在你的测试类中有测试的东西,你需要设置你想要测试的条带操作,如果它像stripe.getcardprovider,那么你需要一个设置,比如mockstripejs.setup(x=>x.getcardprovider).is(cardProvider.Object) cardProvider 是你想要返回的对象我希望这个帮助。


推荐阅读