2017-02-02 11 views
0

Привет, ребята, у меня возникают проблемы, чтобы проверить асинхронную функцию с извлечением на сервер внутри. Я использую мокко с chai-as-обещанным. Тест, который терпит неудачу, это: «вернуть правильный заголовок». Я думаю, мне пришлось бы издеваться над вызовом fetch или что-то в этом роде, или, может быть, проблема в том, что я вызываю функцию async, и когда я выполняю единичный тест, и я не разрешайте обещание. Я не очень уверен, как это достичь. Не могли бы вы помочь мне?Тестирование асинхронного метода с моккой и chai

Функция для теста:

import React from 'react' 
import Technologies from './Technologies' 
import fetch from '../../core/fetch' 
let title= 'Technologies' 
export default { 

    path: '/technologies', 

    async action() { 
    const resp = await fetch('/graphql', { 
     method: 'post', 
     headers: { 
     Accept: 'application/json', 
     'Content-Type': 'application/json', 
     }, 
     body: JSON.stringify({ 
     query: '{technologies{name,icon,url}}', 
     }), 
     credentials: 'include', 
    }) 
    let { data, } = await resp.json() 
    if (!data || !data.technologies) throw new Error('Failed to load technologies.') 
    return { 
     title:title, 
     component: <Technologies title={title} technologies={data.technologies} />, 
    } 
    }, 

} 

И мои тесты:

describe('Route',() => { 

    it('has right path',() => { 
    expect(Route.path === '/technologies').to.be.true 
    }) 


    it('return proper title',() => { 
    const title = 'Technologies' 
    expect(Route.action().title === title).to.be.true 
    }) 
}) 

ответ

0

попробуйте:

describe('Route',() => { 

    it('has right path',() => { 
    return expect(Route.path === '/technologies').to.be.true 
    }) 


    it('return proper title',() => { 
    const title = 'Technologies' 
    return expect(Route.action().title === title).to.be.true 
    }) 
})