Призыв Axios не подвергается насмешкам

Компонент 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 } } }

Это означает, что axios не разрешает обещание, несмотря на инструкции, данные при его заглушке. Пожалуйста помоги.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
324
1

Ответы 1

В своем тесте вы должны использовать заглушенную функцию, поэтому вместо вызова axios(req) вы должны вызвать axios.get(req), поскольку axios как функция не заглушается

Спасибо за ваш вклад .. на самом деле axios (req) находится в коде, который нужно протестировать, а не в тесте ... В тесте у меня есть такая строка: sandbox1.stub (axios, 'get'). Returns ( решено);

Sagar Kalburgi 02.05.2018 07:40

Другие вопросы по теме