Я новичок в Cypress, и я хочу вернуть данные клиенту, когда они делают запрос в GraphQL.Я не уверен, что заглушка - правильное направление.Я изучил https://medium.com/wehkamp-techblog/mocking-specific-graphql-requests-in-cypress-io-22c67924e296, но я не до конца понимаю, как это работает, поэтому я пытаюсь подойти к этому основам.Я знаю, что он обрабатывает любой запрос GraphQL и возвращает то же самое, но это хорошо для моих текущих требований к обучению.
it('something else', () => {
cy.visit('http://localhost:8080', {
onBeforeLoad: win => {
cy.stub(win, 'fetch')
.withArgs('/graphql')
.resolves({
data: {
songs: [
{
id: 1,
title: 'Hey Ya',
},
],
},
});
},
}).contains('Loading...');
});
Я не знаю, с чего начать.
Кроме того, я нахожусьпытаясь получить что-то наподобие приведенного ниже кода, получить данные, а затем вернуть их, чтобы можно было использовать и проверять реальные данные.Хотя возвращение кажется правильным, пользовательский интерфейс React не обновляется.
it('something else', () => {
const query = `query getSongs{
songs {
key: id
title
}
}`;
cy.request({
url: 'http://localhost:8080/graphql',
body: { query },
failOnStatusCode: false,
}).then(res => {
cy.log(res);
expect(res.body.data.songs[0].title).to.equal('Hey Ya');
// Do something with the data here like visit the page and stub with the requested data
cy.visit('http://localhost:8080', {
onBeforeLoad: win => {
cy.stub(win, 'fetch')
.withArgs('/graphql')
.returns(res.body.data); // This returns correctly but doesn't display in ui
},
}).contains('Hey Ya');
});
});