Как издеваться над API в шутку и энзим - PullRequest
0 голосов
/ 31 мая 2018

Это метод, который я использую для вызова выборки моего API:

static sendJsonRequest(address, action, requestType, jsonData, queryParams, successCallback, errorCallback){

    var finalURL = Client.getServiceURL( address, action, queryParams);

    fetch(finalURL, {
      method: requestType,
      headers: {
        'content-type': 'application/json; charset=utf-8',
        'Authorization': 'Bearer ' + localStorage.getItem("access_token"),
        'pragma': 'no-cache',
        'cache-control': 'no-cache'
      },
      body: String(requestType).toLowerCase() === "get" ? undefined : JSON.stringify(jsonData)
    })
    .then(function(response) {
      if (!response.ok) {
          throw Error(response.statusText);
      }
      return response.json();
    })
    .then(function(jsonObj) {
      successCallback(jsonObj);
    })
    .catch(function(err) {
        errorCallback(err);
    });
}

И вот как я использую этот статический метод в моих компонентах:

        componentDidMount(){
            this.getPermissions();
        }

        getPermissions(){
            this.setState({
              Permissions_DATA: []
            });
            var permissionData = {userName: "xyz", resourceId : localStorage.getItem("target_resource_id")};
            Client.sendJsonRequest("authData", "getPermData", "POST", permissionData, "", this.handleGetPermissions, this.handleError);
          }

          handleGetPermissions(response){
            ---
          }

          handleError(e) {
             ---
          }

Каккак новичок я хочу написать контрольный пример для насмешки этого вызова извлечения, но я не знаю, как написать контрольные примеры для того же самого, может кто-нибудь, пожалуйста, помогите мне с этим.

Я пытался выгуливатьэто тоже, но не в состоянии ничего понять.Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Вы можете смоделировать всю функцию и сказать ей, что именно она должна возвращать.

jest.mock('../pathtoSendJsonRequest');

У вас есть возможность также макетировать асинхронные методы

0 голосов
/ 31 мая 2018

Существует библиотека под названием Fetch Mock , которая позволит вам смоделировать ответ API для использования в ваших тестах.

Пример теста, охватывающего поведение Client.sendJsonRequest, можетвыглядит примерно так:

test('Client.sendJsonRequest - calls API endpoint', (done) => {

    fetchMock.post('/the-url-to-test', { a mock response object... });
    Client.sendJsonRequest('/api/address', 'update', 'POST');
    expect(fetchMock.calls('/the-url-to-test').length).toBe(1);
});

Конкретные тесты, которые вы напишите, зависят от того, что вы хотите тестировать, но документация FetchMock должна помочь с этим.

Вы сможете делать что-тоНапример, проверка успешности и обратные вызовы ошибок запускаются, но также используются шпионы и заглушки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...