Мне нужно смоделировать вызовы 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);