2016-11-16 7 views
-1

Некоторая часть кода по-прежнему использует старый обработчик, который в настоящее время затрудняет проверку строк внутри них.

Ниже мой пример функции:

function updateXYZExemption(partyId, payload) { 

     if (!partyId) { 
      throw new Error('partyId is required'); 
     } 

     return $.ajax({ 
      dataType: 'json', 
      contentType: 'application/json', 
      type: 'PUT', 
      data: JSON.stringify(payload), 
      url: config.urls.updateXYZExemptionUrl.replace(/\{partyId\}/, partyId), 
      headers: { 
       'If-Match': eTag 
      }, 
      success: function (data, textStatus, request) { 
       if (request.getResponseHeader('ETag')) { 
        eTag = request.getResponseHeader('ETag'); 
       } 
      } 
     }); 
    } 

Я в состоянии проверить, что эта функция возвращает обещание, но функция, которая присваивается успех собственности не достижим.

+0

затем сделайте его доступным. –

ответ

0

Переместить функцию в своей собственной проверяемой единицы:

var myFunction = function (data, textStatus, request) { 
    if (request.getResponseHeader('ETag')) { 
     eTag = request.getResponseHeader('ETag'); 
    } 
}; 

Затем вы можете вызывать эту функцию самостоятельно, поставить его дразнит, и проверить, что его внутренняя логика взаимодействует с теми издевается, как и ожидалось, и дает ожидаемые результаты/последствия.

Вы можете использовать его в качестве обработчика успеха только путем ссылки на функции:

$.ajax({ 
    //... 
    success: myFunction, 
    //... 
}); 

Это эффективно отделяет логик тестируется (функция) из рамочных водопроводных (призыва к $.ajax()). Сама инфраструктура установки имеет меньшее значение для модульного тестирования, поскольку в этот момент вы действительно просто проверяете чужой код (рамки).

Смежные вопросы