美文网首页
07|Jest中的Mock

07|Jest中的Mock

作者: 雪燃归来 | 来源:发表于2020-05-22 19:50 被阅读0次

    jest中mock函数的作用
    1、捕获函数的调用和返回结果,以及this和调用顺序
    2、他可以让我们自由的设置返回结果
    3、改变函数的内部实现(测试接口)

    一、基础的测试示例

    export const runCallback = (callback) => {
        return callback();
    }
    
    import { runCallback } from './demo'
    test('测试 runCallback', () => {
       const func = () => {
           return 'abc'
       }
       expect(runCallback(func)).toBe('abc')
    })
    

    二、使用jest.fn

    export const runCallback = (callback) => {
        callback('abc');
    }
    import { runCallback } from './demo'
    test('测试 runCallback', () => {
        const func = jest.fn()
        runCallback(func)
        expect(func).toBeCalled()
        console.log(func.mock)
    })
    
    test('测试 runCallback', () => {
       const func = jest.fn()
    //    const func = jest.fn(() => {
    //        return '456'
    //    })
    // func.mockReturnValueOnce('Dell'); //2 他可以让我们自由设置返回结果
    // func.mockReturnValue('Dell');
       runCallback(func)
       runCallback(func)
       //expect(func.mock.calls.length).toBe(2)
       expect(func.mock.calls[0]).toEqual(['abc'])
       console.log(func.mock)
    })
    
    image.png

    三、fn.mock.instances

    export const createObject = (classItem) => {
        new classItem()
    }
    import { createObject } from './demo'
    test.only('测试createObject', () => {
        const func = jest.fn(); // 1、捕获函数的调用和返回结果以及this和调用顺序
        createObject(func);
        console.log(func.mock)
    })
    
    image.png

    四、改变函数的内部实现

    import axios from 'axios'
    export const getData = () => {
        return axios.get('/api').then(res => res.data)
    }
    
    import axios from 'axios'
    jest.mock('axios')
    test.only('测试getData', async() => {
        axios.get.mockResolvedValue({data:'hello'})
        await getData().then((data) => {
            expect(data).toBe('hello')
        })
    })
    

    五、几种相似的结果

    const func = jest.fn()
    func.mockImplementation(() => {
         console.log('123123');
         return 'dell'
     })
    
     const func = jest.fn(() => {
            console.log('123123');
            return 'dell'
    
    })
    

    相关文章

      网友评论

          本文标题:07|Jest中的Mock

          本文链接:https://www.haomeiwen.com/subject/pnlcahtx.html