Краткий ответ: Да Я бы лично провел модульное тестирование для этой функции.
И Да Возможно подключить эту функцию в обратном направлении, используя такие инструменты, как mock-require
или другие методы тестирования / разработки.
Похоже, эта функция выполняет ряд важных задач, которые могут быть полезны для тестового покрытия, чтобы проверить его работоспособность и защитить от регрессий:
- Переименуйте файл, если не
common.Blob
if (storageType.toUpperCase() !== common.Blob) {
...
uploadHelper.renameFileOnEndEvent(
statusData.tenantId,
statusData.viewerId,
statusData.excutionId
);
- Выполняет сопоставление статуса
if (ele.executionID === parseInt(statusData.excutionId) && ele.tenant === statusData.tenantId && ele.panel === statusData.viewerId && ele.tableName === common.type.panelWatch) {
- Выполняет (распределенные?) Обновления состояния
const updateDataPanelStatus = await panelStatusData.updatePanelStatus(statusData.tenantId, statusData.viewerId, ele.path)
eventRepo.updatePanelStatus(statusData.tenantId, statusData.viewerId, updateDataPanelStatus);
- Выполняет процедуру завершения
await eventRepo.executeEndProcedure(statusData);
Каждое из этих действий кажется довольно важным!
рассмотрим случай соответствия статуса. Без тестов, предположим, что вы все проверяете вручную, щелкаете по транзакции, чтобы убедиться, что все работает. Через пару месяцев возвращается другой инженер, который не думает, что ele.tenant
используется больше, и снимает чек с условного. Без тестов нет отзывов об этом изменении, функция не защищена, клиент не защищен, а инженер не защищен!
Дополнительно рассмотрим функцию переименования. Это кажется довольно важным, если бы я работал в этой кодовой базе, я лично хотел бы, чтобы тесты освещали, что эта функция работала, и были защищены от введения регрессии, которая может привести к тому, что переименования не произойдет.
Наконец, тесты поможет вам проверить функции и потоки, работающие во время разработки, и сделает это с меньшими издержками и быстрее, чем ручное выполнение этих потоков.
Сложная часть сейчас фактически тестирует его :) Поскольку трудно выделить важные части функциональности, которые я перечислил выше. Вы можете изменить рефакторинг, чтобы помочь раскрыть эту функциональность и сделать ее непосредственно тестируемой, или вы могли бы использовать какую-то систему макетов / патчей, чтобы позволить вам подключиться к функциональности и утверждать вызовы.