jest(mock)

创建mock函数
let mockFn = jest.fn()
示例1


for (let i = 0; i < 3; i++) {
    mockFn(i, 'a')
}
console.log(mockFn.mock)
输出结果
      {
        calls: [ [ 0, 'a' ], [ 1, 'a' ], [ 2, 'a' ] ], //每次调用时传入的参数
        instances: [ undefined, undefined, undefined ],// 如果是类的话,此属性保存的是每次被示例化的对象
        invocationCallOrder: [ 1, 2, 3 ],
        results: [
          { type: 'return', value: undefined },
          { type: 'return', value: undefined },
          { type: 'return', value: undefined }
        ]
      }

示例2

let result = mockFn(1, 2, 3);

  // 断言mockFn的执行后返回undefined
  expect(result).toBeUndefined();
  // 断言mockFn被调用
  expect(mockFn).toBeCalled();
  // 断言mockFn被调用了一次
  expect(mockFn).toBeCalledTimes(1);
  // 断言mockFn传入的参数为1, 2, 3
  expect(mockFn).toHaveBeenCalledWith(1, 2, 3);


示例3
myMock
  .mockReturnValueOnce(10)//第一次调用时返回10
  .mockReturnValueOnce('x')//第二次调用是返回x
  .mockReturnValue(true);//第三次以后都返回true

console.log(myMock(), myMock(), myMock(), myMock());
// 10 x true true
示例4
test('测试jest.fn()返回固定值', () => {
  let mockFn = jest.fn().mockReturnValue('default');
  // 断言mockFn执行后返回值为default
  expect(mockFn()).toBe('default');
})

test('测试jest.fn()内部实现', () => {
  let mockFn = jest.fn((num1, num2) => {
    return num1 * num2;
  })
  // 断言mockFn执行后返回100
  expect(mockFn(10, 10)).toBe(100);
})

test('测试jest.fn()返回Promise', async () => {
  let mockFn = jest.fn().mockResolvedValue('default');
  let result = await mockFn();
  // 断言mockFn通过await关键字执行后返回值为default
  expect(result).toBe('default');
  // 断言mockFn调用后返回的是Promise对象
  expect(Object.prototype.toString.call(mockFn())).toBe("[object Promise]");
})


示例5
mock axios整个模块
import fetch from 'axios'

jest.mock('axios')

fetch.get.mockResolvedValue('success')

function fetchData() {
    return fetch.get('www.baidu.co ')
}

test('测试数据获取', () => {
    return fetchData().then(res => {
        expect(res).toBe('success')
    })
})

示例5
mock一个文件夹里的方法
jest.mock('./demo')
//jest.unmock('./demo')  //取消模拟demo文件里的方法
//const { getData } = jest.requireActual('./demo')  //使用真正的getData方法而非mock的方法
import { fetchData } from './demo'

test('测试fetchData', () => {
    return fetchData().then(res => {
        expect(res).toBe('success')
    })
})









  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值