一、单元测试
(一)、单元测试的思考
单元测试的重点是:只对当前单元里的代码做测试,里边引入的外部文件并不关心,如果外部的代码引入造成了性能损耗,我们就是使用更简单的东西代替它,让我们的单元测试执行起来更快、更顺畅。所以在单元测试中我们就可以使用各种各样的mock实现我们的测试。
(二)、代码部分
1、创建测试工具类 util.js
class Util {
a(){
// .....很复杂的逻辑代码
}
b(){
// .....很复杂的逻辑代码
}
}
export default Util;
2、创建测试工具类的测试实例 util.test.js
import Util from './util'
test('测试Util类的a方法', () => {
//expect(Util.a()).toBe()
})
test('测试Util类的b方法', () => {
//expect(Util.b()).toBe()
})
3、Util作为外部资源时,做单元测试(demo.js)
import Util from './util'
const demoFunction = (a, b) => {
const util = new Util();
util.a(a);
util.b(b)
}
export default demoFunction;
4、对demo.test.js
jest.mock('./util')
// jest.mock发现util是一个类,会自动把类的构造函数和方法变成 jest.fn()
// const Util = jest.fn()
// Util.a = jest.fn()
// Util.b = jest.fn()
import Util from './util'
import demoFunction from './demo'
test('测试 demoFunction', () => {
demoFunction();
expect(Util).toHaveBeenCalled();
expect(Util.mock.instances[0].a).toHaveBeenCalled()
expect(Util.mock.instances[0].b).toHaveBeenCalled()
})
三、使用mocks自定义单元测试
mocks/util.js
const Util = jest.fn(() => {
console.log('constructor --')
})
Util.prototype.a = jest.fn(() => {
console.log('function a --')
})
Util.prototype.b = jest.fn(() => {
console.log('function b --')
})
export default Util;
网友评论