美文网首页
01|不使用框架手动实现单元测试

01|不使用框架手动实现单元测试

作者: 雪燃归来 | 来源:发表于2020-05-14 13:59 被阅读0次

本篇我们主要通过自己编写一些测试代码来了解一下单元测试原理和过程。

一、项目目录

image.png

二、代码演练

1、编写要测试的数学函数库(math.js)

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

 function sub(a, b){
    return a - b
 }

 function multi(a, b){
    return a - b
 }

module.exports = {
     add, sub, multi
 }

2、编写测试代码(math.test.js)

const { add, sub, multi } = require('./math')
{
    let result = add(1,1)
    let expected = 2
    if(result !== expected){
        throw new Error(`1+1 expected ${expected},but is ${result}`)
    } else {
        console.log('pass...')
    }
}

{
    let result = sub(2,1)
    let expected = 1
    if(result !== expected){
        throw new Error(`2-1 expected ${expected}, but is ${result}`)
    } else {
        console.log('pass ...')
    }
}

{
    let result = multi(2,2)
    let expected = 4
    if(result !== expected){
        throw new Error(`2 * 2 expected ${expected},but is ${result}`)
    } else {
        console.log('pass ...')
    }
}

node math.test.js之后的结果如下图所示:


image.png

从报错的结果,我们就可以知道math库中的multi方法出错,所以我们进行相应的修改即可。

三、封装我们自己的测试库

    前面的代码中,我们已经实现了测试的相关逻辑,这就是单元测试底层的实现逻辑,我们可以将上面的代码简单封装一下,实现更完善的功能。

const { add, sub, multi } = require('./math')

function expect(result){
    return {
        toBe: function(actual){
            if(result !==actual){
                throw new Error(`预期值和实际值不相等,预期${actual} 结果是${result}`)
            }
        }
    }
}

function test(desc, fn){
    try {
        fn()
        console.log(`${desc} 测试通过`)
    } catch (error) {   
        console.log(`${desc} 没有通过测试,${error}`)
    }
}

test('测试加法3+7',() => {
    expect(add(3,7)).toBe(10)
})

test('测试减法2-1',() => {
    expect(sub(2,1)).toBe(1)
})

test('测试乘法 2 * 2',() => {
    expect(multi(3,3)).toBe(9)
})

node math.test.js 运行结果如下:


image.png

是不是很有jest的感觉呀,那就对了,走你~~~~

相关文章

  • 01|不使用框架手动实现单元测试

    本篇我们主要通过自己编写一些测试代码来了解一下单元测试原理和过程。 一、项目目录 二、代码演练 1、编写要测试的数...

  • 【python接口自动化】初识unittest框架

    本文将介绍单元测试的基础版及使用unittest框架的单元测试。 完成以下需求的代码编写,并实现单元测试 账号正确...

  • C 语言测试 - gtest

    C语言的单元测试框架 C语言单元测试框架unitC语言单元测试框架unit的使用_Vincent的专栏-CSDN博...

  • iOS单元测试

    iOS单元测试 前言 单元测试使用XCTest框架 单元测试的目标:模型文件 用处:不基于界面UI的情况下,保证模...

  • Python 单元测试 - pytest

    pytest是python的一种单元测试框架,需要手动安装。与python自带的unittest测试框架类似,但是...

  • Android 单元测试 Robolectric

    参考: Android单元测试(四):Robolectric框架的使用 官网 通过实现一套 JVM 能够运行的 A...

  • 用python实现接口测试(九、Unittest测试框架)

    一、单元测试框架 不论对于开发还是测试,都离不开单元测试框架,对于开发而言使用单元测试框架,可以编写测试代码来验证...

  • 单元测试框架:Robolectric

    前言 前面我们介绍了单元测试框架 JUnit 和 Mockito 的使用(详情查看:单元测试框架:JUnit,单元...

  • 安卓单元测试 - 收藏集 - 掘金

    Android 单元测试 (三):JUnit 单元测试框架的使用 - Android - 掘金 我们写单元测试,一...

  • Nodejs的测试和测试驱动开发

    测试是保证软件质量必不可少的一环。测试有很多形式:手动、自动、单元测试等等。这里我们只聊使用Mocha这个框架在N...

网友评论

      本文标题:01|不使用框架手动实现单元测试

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