【发布时间】:2021-07-20 13:21:43
【问题描述】:
我已经有几个通过赛普拉斯测试的工作项目。 现在我正在尝试使用 Cypress + Pact 添加合同测试
在开发者控制台中,我可以看到该应用正在调用 /api/v1/document-service,但我得到了:
协议验证失败 - 预期的交互与实际不匹配。
部分日志:
W, [2021-07-20T12:49:37.157389 #34805] WARN -- : Verifying - actual interactions do not match expected interactions.
Missing requests:
POST /api/v1/document-service
W, [2021-07-20T12:49:37.157489 #34805] WARN -- : Missing requests:
POST /api/v1/document-service
我正在使用:
cypress: 7.5.0
@pact-foundation/pact: 9.16.0
我已经完成的步骤:
-
添加了 cypress 插件 (https://github.com/pactflow/example-consumer-cypress/blob/master/cypress/plugins/cypress-pact.js)
-
添加的命令 (https://github.com/pactflow/example-consumer-cypress/blob/master/cypress/support/commands.js)
-
在 cypress.json (https://github.com/pactflow/example-consumer-cypress/blob/master/cypress.json) 中添加了配置 - 如果我不想与真实服务器交互,不知道该将什么放入 baseUrl。
-
添加测试:
let server; describe('Simple', () => { before(() => { cy.mockServer({ consumer: 'example-cypress-consumer', provider: 'pactflow-example-provider', }).then(opts => { cy.log(opts) server = opts }) }); beforeEach(() => { cy.fakeLogin() cy.addMockRoute({ server, as: 'products', state: 'products exist', uponReceiving: 'a request to all products', withRequest: { method: 'POST', path: '/api/v1/document-service', }, willRespondWith: { status: 200, body: { data: { collections: [ { id: '954', name: 'paystubs', }, { id: '1607', name: 'mystubs', }, ], }, }, }, }); }); it('is ok?', () => { cy.visit('/new/experiments/FirstProject/collections'); }); })
尝试使用已弃用的cy.server()/cy.route() 和新的cy.intercept(),但仍然验证失败。
【问题讨论】:
标签: javascript testing cypress pact contract