如何对依赖于外部库“ <script src =“ http:// stripe [...]”的API进行单元测试

盖德

我正在尝试对API调用进行单元测试,以确保已使用正确的属性对其进行了调用。此API调用取决于Stripe的外部库,该库通过附加到窗口index.html src="http://stripe[...]"我得到窗口。[...]不是函数。

我成功模拟了该$http.post请求,但是在从Stripes付款成功进行的回调中,它通过调用window.Stripe().redirectToCheckout()将用户重定向回我设法嘲笑,window.Stripe但遇到困难,.redirectToCheckout()不确定如何做到这一点。

index.html:

<script src="https://js.stripe.com/v3/"></script>
<link rel="preconnect" href="https://q.stripe.com">
<link rel="preconnect" href="https://checkout.stripe.com">

StripePayment.vue

async stripe () {
await this.$http.post(process.env.VUE_APP_PAYMENTAPI + 'api/session/', {
        amount: this.cost,
      }).then(response => {
        // Redirect to the main page by using the sessionId provided by stripes response.
        window.Stripe(process.env.VUE_APP_STRIPE_KEY).redirectToCheckout({
          sessionId: response.body
        })
      }, response => {
        this.paymentFailed(response)
      })
}

StripePayment.spec.js

let stripeSpy = sinon.spy(StripePayment.methods, 'stripe')
sinon.assert.calledOnce(stripeSpy)

我希望能够检查API调用是否已成功调用。不幸的是,我收到以下错误消息-“ UnhandledPromiseRejectionWarning:TypeError:window。Stripe不是函数”。如果我存根窗口。Stripe,然后我用.redirectToCheckout()遇到了类似的错误,而这正是我难以进行存根的地方。

有一些类似于我的代码已发布,可以位于此处-https://repl.it/@AndrewReinlieb/Checkout-Test

那将是烧瓶

为了进行正确的隔离单元测试,应模拟所有不属于被测试单元的单元。如果某个单元属于外部库,则应在以下位置进行模拟window

const stripeMock = sinon.stub(window, 'stripe');
const redirectToCheckoutMock = sinon.stub();
stripeMock.returns({ redirectToCheckout: redirectToCheckoutMock });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用http作为依赖项进行单元测试

如何从单元测试中获取src / main / java classloader

如何对Google App Engine Go HTTP处理程序进行单元测试?

如何对依赖于ActivatedRoute参数的组件进行单元测试?

如何在iOS 7.1中使用NSURLSession对HTTP请求和响应进行单元测试?

Python:如何对自定义HTTP请求处理程序进行单元测试?

如何使用Django Rest Framework对HTTP删除进行单元测试

如何对依赖于springBoot applicationContext的单元测试方法进行单元测试?

如何为依赖于其他服务或数据库的服务编写单元测试

如何在Flask中对HTTP摘要式身份验证进行单元测试?

如何对HTTP请求Android进行单元测试

如何测试依赖于另一个服务(又依赖于Http服务)的服务/组件?

使用Jasmine / karma进行Angular 4单元测试以及http发布模拟-如何修复

如何对依赖于元素高度的组件进行单元测试(角度为5)?

如何对依赖于HttpContext.GetGlobalResourceObject的类进行单元测试?

当processElement依赖于广播的数据时,如何在flink中对BroadcastProcessFunction进行单元测试

如何测试依赖于库的代码?

如何在Flutter中对依赖于第三方包装的代码进行单元测试?

如何对需要HTTP请求的功能进行单元测试?

如何对嵌套的HTTP调用进行单元测试

如何运行依赖于Android库模块的单元测试?

如何在AngularJS中使用$ http.jsonp对功能进行单元测试?

如何对一个依赖于其注册回调的Angular服务进行单元测试?

如何在Dart中对lib / src文件进行单元测试?

使用Jest对依赖于HTTP调用的代码进行单元测试的最佳方法?

对依赖于数据库的函数进行单元测试

如何对依赖于 redux props 的组件进行单元测试

如何在 akka http 的路由标头中对 OAuth2BearerToken 进行单元测试

如何对依赖于实例属性的实例方法进行单元测试?