我正在尝试使用赛普拉斯设置TypeScript。该环境似乎设置良好,但是从赛普拉斯提取类型定义似乎存在问题。
为了解构cy.wait('@graphql').then({request})
参数,TypeScript抱怨您必须设置request
参数的类型。赛普拉斯似乎没有很多类型导出功能,但是有Cypress.WaitXHR
和Cypress.ObjectLike
使我可以破解解决方案。
import Cypress from 'cypress';
type WaitXHR = Cypress.WaitXHR;
type ObjectLike = Cypress.ObjectLike;
describe('Admin Page', () => {
it('Visits admin page', () => {
cy.server()
.route({
method: 'POST',
url: 'https://www.example.com/graphql',
}).as('graphql');
cy.visit('/');
cy.wait('@graphql').then((xhr: WaitXHR) => {
const { request }: { request: ObjectLike} = xhr;
expect(request.body.operationName).to.equal('initalSetup');
});
});
此解决方案似乎可以安抚TypeScript,但感觉不太好。 有更好的方法吗?
答案 0 :(得分:0)
我已经这样做了,虽然我不喜欢使用“any”更整洁。
import Cypress from 'cypress';
type ObjectLike = Cypress.ObjectLike;
interface WaitXHRCustom {
request: ObjectLike;
response: ObjectLike;
}
cy.wait(`@${aliasRequest}`).should((xhr: any) => {
const { request, response } = xhr as WaitXHRCustom;