我必须在js中调用stripe.redirectToCheckout (https://stripe.com/docs/js/checkout/redirect_to_checkout)来将客户带到他们的条形结账页面。
我想使用柏树来测试签出过程,但是当stripe.redirectToCheckout导航到stripe域的页面时,它无法处理条带重定向,因为柏树帧丢失了。
我还想测试Stripe将我们重定向回成功或错误URL。
我知道测试外部站点被柏树(https://github.com/cypress-io/cypress/issues/1496)的人们认为是一个“反模式”。但是,在这种情况下,如何测试一个非常标准的web流程,结帐,(我将添加一个非常流行和标准的支付服务)?我不相信这是“反模式”。这是端到端测试的一个重要步骤,Stripe专门为这类测试提供了一个测试沙箱。
发布于 2021-05-15 00:31:13
e2e测试应用程序的一种常见方法是制作一个简单的模拟版本,然后将其应用于e2e测试。模拟也可以在开发过程中应用,以加快速度。
发布于 2021-05-19 09:31:12
这个有用吗?
it(`check stripe redirection`, () => {
cy.get('#payButton').click();
cy.location('host', { timeout: 20 * 1000 }).should('eq', STRIPE_REDIRECT_URL);
// do some payment stuff here
// ...
// after paying return back to local
cy.location({ timeout: 20 * 1000 }).should((location) => {
expect(location.host).to.eq('localhost:8080')
expect(location.pathname).to.eq('/')
})
})我使用这个方法来测试keyCloak登录。这是真正起作用的代码。
describe('authentication', () => {
beforeEach(() => cy.kcLogout());
it('should login with correct credentials', () => {
cy.visit('/');
cy.location('host', { timeout: 20 * 1000 }).should('eq', 'keycloak.dev.mysite.com:8443');
// This happens on https://keycloak.dev.mysite.com:8443/auth/dealm/...
cy.fixture('userCredentials').then((user) => {
cy.get('#username').type(user.email);
cy.get('#password').type(user.password);
cy.get('#kc-login').click();
cy.location({ timeout: 20 * 1000 }).should((location) => {
expect(location.host).to.eq('localhost:8080')
expect(location.pathname).to.eq('/')
})
})
});发布于 2021-05-21 11:10:47
我让它尝试使用条纹元素代替,因为它不会重定向,并给予我更多的控制权。
https://stackoverflow.com/questions/62395434
复制相似问题