тестирование самой функции шутки - PullRequest
0 голосов
/ 30 ноября 2018

Я пытался проверить фиктивную функцию, напечатав ее возвращаемое значение на консоли.Это настройка -

Служба, которая подвергается насмешке (просто копия Fetch) -

export default function FetchService(url){
return fetch(url);
}

Это моя настройка ложной функции (в папке __mocks__) -

const  posts= [
      { "id": 1, "Name": "pen", "Stock": "100" },
      { "id": 2, "Name": "pencil", "Stock": "150" }
    ]


export default  function FetchService(url){
return  new Promise((resolve)=>{
Promise.resolve(posts)
})
     }

Так что, если функция макета работает нормально, обещание должно разрешаться и всегда возвращать предопределенный массив из 2 объектов, верно?

Имея это в виду, я написал следующий тестовый пример -

jest.mock('./FetchService');
test('getting data',(done)=>{

    let returnedData=[];
    FetchService('').then((data)=>data.json()).then((dataP)=>{
        returnedData=dataP;     
    });

    setTimeout(()=>{console.log(returnedData);done();},2000);    
})

Проблема в том, что файл consoloe.log показывает, что «возвращенные данные» - это пустой массив вместо того, что я ожидал.

Чего мне здесь не хватает?Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.

1 Ответ

0 голосов
/ 30 ноября 2018

Во-первых, ваша имитация никогда не разрешается, потому что вы не вызываете resolve callback, а во-вторых, что mock должен возвращать объект методом json, который должен возвращать обещание:

export default  function FetchService(url) {
  const json = () => Promise.resolve( posts );
  return  new Promise( resolve => resolve({ json }));
}

Кроме того, вы можете позвонить done() напрямую через .then (может быть, просто без setTimeout):

test('getting data',(done)=>{
  FetchService('')
    .then(data => data.json())
    .then(
      data => {
        expect(data).toHaveLength(2);
        done();     
  });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...