Компонент My React использует Axios для вызова API. В моем модульном тесте я пытаюсь смоделировать Axios с помощью заглушки Sandbox от Sinon, например:
sandbox1 = sandbox.create();
const resolved = new Promise((r) => r([{ id: 1, name: 'PetA' }, { id: 2, name:'PetB' }]));
sandbox1.stub(axios, 'get').returns(resolved);
Я хочу проверить приведенный ниже код
this.setState(
({ testing }) => ({
testing: {
...testing,
[testKey]: {
isExecuting: true,
response: null
}
}
}),
() => {
axios(req)
.then(r => {
this.setState(state => {
const cancelled =
state.testing &&
state.testing[testKey] &&
state.testing[testKey]['cancelled'];
return !cancelled
? {
test: {
...state.test,
[testKey]: {
isExecuting: false,
cancelled: false,
response: r
}
}
}
: undefined;
});
})
this is followed by catch block
and closed paranthesis of setState
Проблема в том, что когда я запускаю тест с заглушенными осями, как показано в начале, я всегда получаю следующее в качестве результирующего состояния в конце
{ testing: { 'get_/pets': { isExecuting: true, response: null } } }
Это означает, что аксиос не разрешает обещание, несмотря на инструкции, данные при его заглушении. Пожалуйста, помогите.