Насмешливый вызов API в JS - PullRequest
       3

Насмешливый вызов API в JS

0 голосов
/ 02 февраля 2019

Мне нужно смоделировать вызовы API для нажатия кнопки, но фактический вызов вложен в файл утилиты, который вызывается файлом промежуточного программного обеспечения.В некотором коде фреймворка использовались Jest, axios-mock-adapter и Enzyme.(Я все еще оборачиваюсь вокруг того, что делает каждый из них).

Итак, позвольте мне предварить это.Я стажер в компании, где моя задача - протестировать некоторый код JS для части программного обеспечения, построенной на микросервисной архитектуре.Итак, сначала позвольте мне извиниться за любые неправильные слова.Мой фон в сборке C / C ++ и x86.Нет, я не выдумал свое резюме при подаче заявления на эту должность.Компания полностью осознавала, что у меня практически нет опыта работы с JS.Я попытался создать mock = MockAdapter ('axios'), а затем вызвал его с помощью mock.OnGet (). Reply (), но при проверке моего покрытия каждый раз выдается ошибка.

Слишком много кодапостить, поэтому я попытаюсь привести пример

class ComponentName extends component {
    stuff
}

ComponentNameFunc {
    this.middleware.funcName.then(
        response ()=>{}
        errorRespone ()={}
    )
}


//funcName is a name of a middleware function that calls a function 
//in the utility file.  The utility file does the axios.get call

. Когда я рендерил компонент, имитировал нажатие кнопки, он называет this.middleware.funcName, но затем покрытие показывает, что он переходит в часть errorResponse.Вот тестовый пример

describe('test',()=>{
    test('button click', done => {
        mock.onGet('aURL').reply(200,mockData);
        Enzyme.configure({ adapter: new Adapter() });
        const wrapper = shallow(
            <ComponentName/>);
        expect(wrapper.exists()).toBe(true);
        wrapper
            .find("Button")
            .at(0)
            .simulate("click");
        done();
    )};
 )};

РЕДАКТИРОВАТЬ: Таким образом, я нашел часть проблемы.У меня было несколько макетов для разных вызовов API, и, видимо, только 1 регистрировался.Однако некоторые из этих функций, которые я тестирую, сделают два вызова API.Как мне смоделировать два отдельных вызова API для одного теста?Первоначально у меня было что-то вроде этого

import axios from "axios"
let mock = MockAdapter(axios);
let mock2 = MockAdapter(axios);


mock.OnGet("URL").reply(200,Data);
mock2.OnGet("URL2").reply(200,DifferentData);

1 Ответ

0 голосов
/ 03 февраля 2019

Так что я понял это.Я пытался создать несколько фиктивных переменных (или это объекты?), Таких как mock, mock2, mock3.Кажется, репликация mock.OnGet.reply с различной информацией работает просто отлично.

...