Vic*_*box 5 stripe-payments reactjs
我正在测试使用Stripe的React组件,并且想知道如何构建测试?我看到此错误:
错误:请在此页面上加载Stripe.js(https://js.stripe.com/v3/)以使用react-stripe-elements。如果Stripe.js尚不可用(它正在异步加载,或者您正在使用服务器端呈现),请参见https://github.com/stripe/react-stripe-elements#advanced-integrations
生产代码非常基本:
<StripeProvider apiKey={config.stripeKey}>
<MyCheckout />
</StripeProvider>
Run Code Online (Sandbox Code Playgroud)
测试代码也是基本的,但会导致错误。当我仅在浏览器中访问应用程序时,不会发生该错误:
it('Should render the correct element', () => {
let rendered = ReactTestUtils.renderIntoDocument(
<Provider store={store}>
<Account />
</Provider>)
let elem = ReactDOM.findDOMNode(rendered)
expect(elem.tagName.toLowerCase()).to.equal('div')
})
Run Code Online (Sandbox Code Playgroud)
看起来他们的高级指南回答了这个问题,他们这样做的部分是:
componentDidMount () {
if (window.Stripe) {
this.setState({stripe: window.Stripe(config.stripeKey)}) // eslint-disable-line new-cap
} else {
document.querySelector('#stripe-js').addEventListener('load', () => {
this.setState({stripe: window.Stripe(config.stripeKey)}) // eslint-disable-line new-cap
})
}
}
Run Code Online (Sandbox Code Playgroud)
在我的测试中:
it('Should render the correct element', () => {
window.Stripe = function () {}
let rendered = ReactTestUtils.renderIntoDocument(
<Provider store={store}>
<CartPage />
</Provider>)
let elem = ReactDOM.findDOMNode(rendered)
expect(elem.tagName.toLowerCase()).to.equal('div')
})
Run Code Online (Sandbox Code Playgroud)
测试至少可以运行。
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |