Cypress w/graphql-在通过UI获取测试身份时遇到问题。更好的方法来消除突变?

Cypress w/graphql-在通过UI获取测试身份时遇到问题。更好的方法来消除突变?,cypress,Cypress,因此,如果我在真空中测试页面,而没有与后端进行太多交互,那么效果会很好。如果我的UI遇到任何类型的服务,我在实际与它交互时会遇到问题。基本上,没有什么是授权的。我尝试编程设置cookie,没有骰子。我试着读饼干,没有。顺便说一句,我的整个网站需要登录 cy.setCookie('sess', ';askjdfa;skdjfa;skdjfa;skdjfa;skfjd');<-- does not work cy.getCookie('sess').should('exist') <-

因此,如果我在真空中测试页面,而没有与后端进行太多交互,那么效果会很好。如果我的UI遇到任何类型的服务,我在实际与它交互时会遇到问题。基本上,没有什么是授权的。我尝试编程设置cookie,没有骰子。我试着读饼干,没有。顺便说一句,我的整个网站需要登录

cy.setCookie('sess', ';askjdfa;skdjfa;skdjfa;skdjfa;skfjd');<-- does not work

cy.getCookie('sess').should('exist') <-- does not work
  • 现在,我正在为我正在测试的站点的每个部分导入登录规范。我知道这是一种反模式。我想解决这个问题

  • 未设置我的身份验证(cookie)。即使我试图以编程的方式设置它,也不起作用

  • 也许我应该删掉我的graphql突变?怎么做

  • 最后,如果我要删除graphql变体,我如何更新会话(通过我的主会话查询)。如果我能让这些变异起作用,那么刷新页面就会得到更新的数据,所以我并不完全需要这个部分


  • 有什么想法吗?

    我没有做存根和所有这些,因为你在我的另一篇文章中问变异将如何处理
    cy.request
    。我是这样做的,它基本上是有效的。希望这会有所帮助

    不过我先创建了一个const

    export const join_graphQL=(查询,额外={})=>{
    返回`突变{
    ${query}(加入:{email:${extra.email}),id:${extra.id}){
    身份证、姓名、电子邮件
    }    
    }`
    };
    
    请求配置常量

    export const graphqlReqConfig=(body={},api=graphQlapi,method='post')=>{
    返回{
    方法,,
    身体,
    url:api,
    failOnStatusCode:false
    }
    };
    
    使用
    cy.request进行变异查询

     const mutation = `
       mutation {
         updateUser(id: 1, firstName: "test") {
           firstName
           lastName
           id
           role
         }
       }`
    
     cy.request({
        url: url,
        method: 'POST',
        body: { query: mutation },
        headers: {
          Authorization: `Bearer ${token}`,
        },
      })
    
    const mutationQuery=join_graphQL('mutationName'{
    电子邮件:“电子邮件”,
    身份证号码:38293
    });
    cy.request(graphqlReqConfig({
    查询:mutationQuery
    }))。然后((res)=>{
    const data=res.body.data['mutationName'];//结果
    });
    
    希望它不会太乱,看不见


    基本上,字段必须是字符串,比如
    “${extra.email}”
    ,否则会给您带来错误。不确定graphql是如何深入工作的,但如果我只做
    ${extra.email}
    我会得到一个错误,我忘了它是什么错误。

    这里有一个简单的方法来处理带有
    cy.request

     const mutation = `
       mutation {
         updateUser(id: 1, firstName: "test") {
           firstName
           lastName
           id
           role
         }
       }`
    
     cy.request({
        url: url,
        method: 'POST',
        body: { query: mutation },
        headers: {
          Authorization: `Bearer ${token}`,
        },
      })
    

    在运行您的登录规范时,尝试设置
    Cypress.Cookies.debug(true)
    ,并查看是否有Cookies打印在命令logHey中,谢谢-我会尝试一下。我不确定这将是什么:api=graphQlapi,这意味着什么?@jamesemanon哦,糟糕,这只是你的graphql的
    url
    ,例如
    https://example.com/graphql-endpoint
    我发现没那么凌乱:)