手写jest工具

412 阅读1分钟

TDD 面向测试驱动开发

模仿jest 实现简单的自动化测试工具


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="./index.js"></script>
    <script src="./mytest.js"></script>
</head>
<body>
    <script>
    //   console.log(add(1,2))
    </script>
</body>
</html>
//index.js
function add(a,b) {
    return a + b
}

//index.js
function add(a,b) {
    return a + b
}
//mytest.js

function test(title,fn) {
    try {
        fn()
        console.log(title,"测试成功")
    } catch (error) {
        console.error(error)
        console.log(title,"测试失败")
    }
}

function expect(param) {
    return {
        toBe(ret){
            if (param !== ret) {
                throw Error(`期望与实际不符合,期望是${ret},实际是${param }`)
            }
        }
    }
}

test("测试相互加",() => {
    expect(add(1,2)).toBe(3)

})
test("测试其他类型相加",() => {
    expect(add("1",2)).toBe(3)
    expect(add(1,"2")).toBe(3)
    expect(add("1","2")).toBe(3)
})

输出结果 image.png

开始优化代码

function add(a,b) {
    return Number(a) + Number(b)
}