柏树与阿波罗之间的相容性

时间:2019-07-04 15:14:11

标签: xmlhttprequest fetch apollo react-apollo cypress

我正在使用react-apollo进行GraphQL查询,而我正在使用Cypress进行测试。

问题在于,这2位球员似乎表现不佳。阿波罗似乎正在通过Fetch API发出所有请求。

enter image description here

但是Cypress似乎无法捕获任何东西,除了XHR请求。

那我该怎么做才能解决这个问题?赛普拉斯有没有办法捕获“获取”请求?有没有办法让react-apollo使用“ xhr”而不是“ fetch”?

2 个答案:

答案 0 :(得分:0)

尝试cypress-graphql-mock

您只需将其传递给您的schema

const schema = fs.readFileSync('../../app-schema.graphql', 'utf8');
// alternatively, using a dumped introspection query:
// const schema = require('../../dumped-schema.json')

beforeEach(() => {
  cy.server();
  cy.mockGraphql({ schema });
});

答案 1 :(得分:0)

一个简单的解决方法是使用whatwg-fetch,您可以通过npm将其添加为依赖项,然后...

cypress / support / fetch_to_xhr.js

function fetchToXhr() {
  let polyfill

  before(() => {
    cy.readFile('node_modules/whatwg-fetch/dist/fetch.umd.js')
      .then((contents) => polyfill = contents)
    Cypress.on('window:before:load', (win) => {
      delete win.fetch
      win.eval(polyfill)
    })
  })
}

fetchToXhr()

cypress / support / index.js

import "./fetch_to_xhr";

那次赛普拉斯将捕获graphql请求