• 袋袋
    2019-07-17
    两个问题
    1、单元测试可以对业务代码进行测试吗,和平时自己本地运行调试有什么本质上的区别吗。
    2、冒烟测试可以直接运行构建看是否成功,单元测试一项一项测是不是比冒烟麻烦很多,单元测试的优势是什么相对于冒烟。

    作者回复: 建议可以整体的去学习了解下前端测试这个方向的知识体系。这两个问题回答下:
    1. 单元测试可以对业务代码进行测试,我们团队针对核心业务会做单元测试和端对端测试。单测更加适合通用组件和基础模块。和本地调试的区别:本地调试是黑盒,颗粒度较粗,单测是白盒,颗粒度更细。另外单侧可以覆盖到具体的代码,比如某段代码只有特定的情况才会执行。单测也是一个衡量项目质量很好的手段,每次需求迭代都可以通过单测保证基础的逻辑不受到影响。

    2. 单元测试颗粒度更细,是白盒,需要针对具体的代码逻辑分支进行测试用例编写。冒烟测试只是关注最基本的功能是否ok,比如构建是否成功,是否有资源生成出来,也是一个黑盒的过程。

    
     4
  • 宋汉仑
    2019-10-14
    "Mocha"是“摩卡”,发音是/ˈmōkə/。一种咖啡,摩卡咖啡。哈哈,当然,这不重要。
     1
     2
  • 不想说什么
    2019-12-19
    老师你好
    const path = require('path');
    process.chdir(path.join(__dirname, 'smoke/template'));
    describe('builder-webpack test case', () => {
        require('./unit/webpack-base-test');
    });
    在编写这个测试用例时为什么要切换到template目录
    展开
     1
    
  • Geek_983df7
    2019-11-25
    No coverage information was collected, exit without writing coverage information
    E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\.bin\_mocha:2
    basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
              ^^^^^^^

    SyntaxError: missing ) after argument list
        at Module._compile (internal/modules/cjs/loader.js:892:18)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)
        at Object.Module._extensions.<computed> [as .js] (E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\istanbul\lib\hook.js:109:37)
        at Module.load (internal/modules/cjs/loader.js:812:32)
        at Function.Module._load (internal/modules/cjs/loader.js:724:14)
        at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)
        at runFn (E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\istanbul\lib\command\common\run-with-cover.js:122:16)
        at E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\istanbul\lib\command\common\run-with-cover.js:251:17
        at E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\istanbul\lib\util\file-matcher.js:68:16
        at E:\ImportantTest\WEBPACK\my-test\builder-webpack\node_modules\async\lib\async.js:52:16
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! ztsk-webpack@1.0.0 test: `istanbul cover ./node_modules/.bin/_mocha`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the ztsk-webpack@1.0.0 test script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in:
    npm ERR! C:\Users\Administrator\AppData\Roaming\npm-cache\_logs\2019-11-25T07_47_47_152Z-debug.log
    展开
     3
    
  • 周大侠
    2019-11-04
    老师执行"test": "istanbul cover ./node_modules/.bin/_mocha",报错
    这是我的版本
    "istanbul": "^0.4.5",
        "mocha": "^6.2.2",

    test /Users/zzh/project/build-webpack-zzh
    > istanbul cover ./node_modules/.bin/_mocha

    Failed to parse file: /Users/zzh/project/build-webpack-zzh/lib/webpack.base.js
    Transformation error; return original code
    { Error: Line 38: Unexpected token )
        at constructError (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2407:21)
        at createError (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2426:17)
        at unexpectedTokenError (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2500:13)
        at throwUnexpectedToken (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2505:15)
        at parsePrimaryExpression (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:3307:13)
        at inheritCoverGrammar (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2681:18)
        at parseLeftHandSideExpressionAllowCall (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:3414:20)
        at inheritCoverGrammar (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:2681:18)
        at parsePostfixExpression (/Users/zzh/project/build-webpack-zzh/node_modules/istanbul/node_modules/esprima/esprima.js:3490:16)

    展开
     3
    
  • 请叫我胖虎
    2019-07-23
    老师照着你的 写法 报这个错
    istanbul cover ./node_modules/.bin/_mocha

    No coverage information was collected, exit without writing coverage information
    D:\D_disk\LEARN_CODE\webpack4.0\build-webpack\node_modules\.bin\_mocha:2
    basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
              ^^^^^^^

    SyntaxError: missing ) after argument list
        at Module._compile (internal/modules/cjs/loader.js:721:23)
        at Object.Module._extensions..js (internal/modules/cjs/loader.js:787:10)
        at Object.Module._extensions.(anonymous function) [as .js] (D:\D_disk\LEARN_CODE\webpack4.0\build-webpack\node_modules\istanbul\lib\hook.js:109:37)
        at Module.load (internal/modules/cjs/loader.js:653:32)
        at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
        at Function.Module._load (internal/modules/cjs/loader.js:585:3)
        at Function.Module.runMain (internal/modules/cjs/loader.js:829:12)
        at runFn (D:\D_disk\LEARN_CODE\webpack4.0\build-webpack\node_modules\istanbul\lib\command\common\run-with-cover.js:122:16)
        at D:\D_disk\LEARN_CODE\webpack4.0\build-webpack\node_modules\istanbul\lib\command\common\run-with-cover.js:251:17
        at D:\D_disk\LEARN_CODE\webpack4.0\build-webpack\node_modules\istanbul\lib\util\file-matcher.js:68:16
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! build-webpack@1.0.0 test: `istanbul cover ./node_modules/.bin/_mocha`
    npm ERR! Exit status 1
    npm ERR!
    npm ERR! Failed at the build-webpack@1.0.0 test script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

    npm ERR! A complete log of this run can be found in:
    npm ERR! C:\Users\11294\AppData\Roaming\npm-cache\_logs\2019-07-23T04_09_28_095Z-debug.log
    展开
     5
    
  • 齐庆福
    2019-07-21
    单元测试和测试覆盖率一般是在构建前全部完成,还是构建后呢

    作者回复: 这里有两种情况:

    第一种:也是我们本章的场景,即针对基础组件或者构建包而言。需要通过单测和测试覆盖率保证组件质量。这个是需要在发版前严格遵守的。

    第二种:对于业务而言,每次commit时会进行业务代码的构建。同时异步的触发单测和测试覆盖率检查,并没有先后顺序要求。

    
    
我们在线,来聊聊吧