У меня есть функция, как показано ниже, которая выполняет 2 вызова извлечения внутри одной и той же функции.
getNames() {
var qs = require("qs");
fetch(<URL>,
{
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
},
body: qs.stringify({
firstName: this.state.firstName,
lastName: this.state.lastName
})
})
.then(response => response.json()).then((data) => {
console.log(data)
});
var url = new URL(<someURL>)
fetch(<someURL>).then(response => response.json()).then((data) => {
...do something...
}
})
.catch(error => {
alert("no response");
console.log(error);
});
}
Я проверяю это с помощью Jest и Enzyme on React.Вышесказанное относится к компоненту GetName.Ниже приведен мой тестовый пример:
describe('getName', () => {
const wrapper = shallow(<GetName />).instance();
beforeEach(() => {
global.fetch.resetMocks();
});
it('positive flow', () => {
global.fetch.mockResolvedValue(
new Response(JSON.stringify({data: "mockData"}))
);
const state = {
firstName: "don",
lastName: "Lee"
};
wrapper.setState(state);
const actualValue = wrapper.getNames();
expect(actualValue).toBeUndefined();
});
});
Как только я это сделаю, я получаю ошибку, что TypeError: body used already for: undefined
Я понимаю, что выборка здесь используется для вызова POST, но какя могу убедиться, что могу смоделировать оба вызова выборки внутри функции?
Я также пробовал fetch.mockResponse
и fetch.mockResponses
, а также fetch.mockResponseOnce
.Ни один из них, кажется, не помогает мне издеваться над ними несколько раз, и я получаю эту ошибку со всеми упомянутыми функциями.
Есть ли какой-нибудь другой способ смоделировать оба вызова выборки?