05|异步代码测试方法

2020-05-22  本文已影响0人  雪燃归来

1、示例一(返回值和返回promise的处理)

import axios from 'axios'
export const fetchData = (fn) => {
    axios.get("http://www.dell-lee.com/react/api/demo.json").then(response => {
        fn(response.data)
    })
}


import { fetchData } from './fetchData'
test('fetchData 返回结果为 {success: true}', (done) => {
    fetchData((data) => {
        expect(data).toEqual({
            success: true
        })
        done();
    })
})

2、示例二(正常处理和异常处理)

import axios from 'axios'
export const fetchData = () => {
    return axios.get("http://www.dell-lee.com/react/api/demo.json");
}

import { fetchData } from './fetchData'
test('fetchData 返回结果为 {success: true }', () => {
    return fetchData().then((response) => {
        expect(response.data).toEqual({
            success: true
        })
    })
})

test('fetchData 返回结果为 {success: true}', () => {
    expect.assertions(1)
    return fetchData().catch(e => {
        expect(e.toString().indexOf('404') > -1).toBe(true)
    })
})

3、示例三(resolves/rejects)

import axios from 'axios'
export const fetchData = () => {
    return axios.get("http://www.dell-lee.com/react/api/demo.json")
}

import { fetchData } from './fetchData'
test('fetchData 返回结果为 {success: true}', () => {
    return expect(fetchData()).resolves.toMatchObject({
        data: {
            success: true
        }
    })
})

import { fetchData } from './fetchData'
test('fetchData 返回结果为 404', () => {
    return expect(fetchData()).rejects.toThrow();
})

4、示例四(async/await)

import axios from 'axios'
export const fetchData = () => {
    return axios.get("http://www.dell-lee.com/react/api/demo.json")
}

import { fetchData } from './fetchData'
test('fetchData 返回结果为 {success: true}', async () => {
    await expect(fetchData()).resolves.toMatchObject({
        data:{
            success: true
        }
    })
})

test('fetchData 返回的结果 404', async () => {
    await expect(fetchData()).rejects.toThrow()
})

5、示例五(async/await 异步求值)

import axios from 'axios'
export const fetchData = () => {
    return axios.get("http://www.dell-lee.com/react/api/demo.json")
}

import { fetchData } from './fetchData'
test('fetchData 返回结果为{ success: true}', async () => {
    const response = await fetchData();
    expect(response.data).toEqual({
        success: true
    })
})

test('fetchData 返回结果为 404', async () => {
    expect.assertions(1);
    try {
        await fetchData()
    } catch (e) {
        expect(e.toString().indexOf('404') > -1).toBe(true)
    }
})
上一篇下一篇

猜你喜欢

热点阅读