zoukankan      html  css  js  c++  java
  • 前端单元测试 从0到0.1

    背景:

    这段时间在学习lodash源码,以提升自己的函数编程水平。从github上下载源码之后,发现人家的源码 每个函数都有一个对应的test.js文件。而我写一个函数 就需要不断的通过script标签导入到一个html文件中,然后在浏览器环境中验证。步骤非常繁琐,而且一点也没有技术含量。所以 查资料学习了一些关于单元测试的知识。

    单元测试必要性

    单元测试其实就是白盒测试,以函数为粒度 通过测试框架,断言库API 来实现测试的目的。

    这里要说一下我学lodash的步骤,我是先去官网查看函数定义,根据这个函数的作用定义,自己先写代码实现一遍,然后再对照源码,分析差距。所以我很符合测试驱动的场景。所以需要引入单元测试。

    理想状况是 我看完函数定义,就将测试用例写好,然后写好测试文件,在开始编写自己的函数。

    测试基本概念

    测试分为两类:单元测试(unitTest) 和端到端测试(e2e)。单元测试以函数为一个单元,假定好入参和出参 。测试函数是否正常执行。常见于开发自测。

    端到端测试 是功能性的测试,通过执行点一个按钮,输入一些数据 等动作,看是否达到预期的效果。一般来说 测试人员用的比较多。

    单元测试常用的工具: 测试框架+断言库

    断言库:

    断言库有很多种 常见的有assert,chai。我只用了assert,因为node自带。它其实就是一些判断条件,满足条件认为true。否则是false。

    断言和if判断的区别是 断言识别非法情况,if判断错误情况。断言为false会自动中断程序。if如果是false的话 理论上来说 还是要写一些处理逻辑的。

    如果单独使用断言库 需要将断言语句写在要测试的函数内部。 这样函数会很长。不好。如果函数需要发布到生产环境 还需要加上 #defin NOEBUE 来禁用断言。

    测试框架:

    测试框架就更多了,mocha, Karma等。

    因为断言库的不方便单独使用,所以一般来说,我们都是配合着测试框架一起使用的。有的测试框架是自带断言库的,也可以单独使用一个测试框架 配合着自己导入的断言库。

    导入测试框架的话 就需要一个工程了,不能在一个js文件里瞎搞了。

    需要建立一个node项目 运行 npm init 可以快速获取一个node项目。 建好项目引入测试框架后,就可以用命令行 在node环境中 测试了。

     

     

  • 相关阅读:
    CodeSmith实用技巧(十四):使用Progress对象
    .NET设计模式(5):工厂方法模式(Factory Method)
    CodeSmith实用技巧(七):从父模版拷贝属性
    CodeSmith实用技巧(十一):添加设计器的支持
    CodeSmith实用技巧(六):使用XML 属性
    CodeSmith实用技巧(三):使用FileDialogAttribute
    CodeSmith实用技巧(十二):自动执行SQL脚本
    CodeSmith中实现选择表字段的几点想法
    CodeSmith开发系列资料总结
    你真的了解.NET中的String吗?
  • 原文地址:https://www.cnblogs.com/ada-blog/p/12603865.html
Copyright © 2011-2022 走看看