Jest - Mock Response.headers.get () - PullRequest
       5

Jest - Mock Response.headers.get ()

0 голосов
/ 17 января 2019

У меня есть метод, который извлекает fileName из заголовка ответа http:

export const getFilenameFromResponse = response => {
 const filenameRegex = /filename[^=\n]*=["](.*?)["]/;
 const matches = filenameRegex.exec(
   response.headers.get('Content-Disposition')
 );
 return matches != null && matches[1] ? matches[1] : '';
}; 

Теперь я собирался написать юнит-тест с Джестом. К сожалению, In не может сделать что-то вроде

const headers = myHeaders = new Headers([
    ['Content-Disposition', 'form-data; fileName="testfile.txt"']
]);
const response = new Response ({headers: newHeaders});
result = getFilenameFromResponse(response)
expect(result).ToEqual('testfile.txt';

потому что тест не пройден, потому что результатом является пустая строка. Я думаю, это из-за неправильной инициализации объекта ответа. Есть ли способ издеваться response.headers.get()?

С уважением Michael

1 Ответ

0 голосов
/ 17 января 2019

Вы можете использовать spyOn, чтобы установить поведение функции get:

const response = new Response ({headers: newHeaders});
const get = jest.spyOn(response.headers, 'get')
get.mockImplementation(()=> '')// do what ever `get` should to

Другой способ - не создать реальный Response, а просто передать простой объект:

const response = {
  headers: {
    get: jest.fn(()=> '')// do what ever `get` should to )
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...