使用摩卡和柴测试异步方法



嗨,伙计们,我在测试异步函数并提取到内部服务器时遇到了麻烦。我用摩卡和柴如承诺的那样。失败的测试是:"返回正确的标题"我想我将不得不模拟获取调用或其他东西,或者问题可能是我正在调用异步函数,并且因为我正在执行单元测试并且我没有解决承诺。我不太确定如何实现这一目标。你能帮我吗?

要测试的函数是:

    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
  })
})

尝试:

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
  })
})

摩卡文档中建议的第一个策略是使用"done"回调。这是 it 中回调的额外参数。您可以在测试中的最后一个断言之后调用它。

例如,对于您的测试,您忘记返回 期望 中的函数:

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

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

最新更新