美文网首页
nodejs(三)

nodejs(三)

作者: 宋song一 | 来源:发表于2018-12-17 23:30 被阅读4次

    什么是事件循环

    Node采用的是单线程的处理机制(所有的I/O请求都采用非阻塞的工作方式),至少从Node.js开发者的角度是这样的。 而在底层,Node.js借助libuv来作为抽象封装层, 从而屏蔽不同操作系统的差异,Node可以借助livuv来来实现多线程。下图表示了Node和libuv的关系。

    image

    Libuv库负责Node API的执行。它将不同的任务分配给不同的线程,形成一个事件循环, 以异步的方式将任务的执行结果返回给V8引擎。可以简单用下面这张图来表示。

    image

    每一个I/O都需要一个回调函数——一旦执行完便推到事件循环上用于执行

    什么是Stub?举个使用场景

    Stub是用于模拟一个组件或模块的函数或程序。在测试用例中, 简单的说,你可以用Stub去模拟一个方法,从而避免调用真实的方法, 使用Stub你还可以返回虚构的结果。你可以配合断言使用Stub。

    举个例子,在一个读取文件的场景中,当你不想读取一个真正的文件时:

    var fs = require('fs');
     
    var readFileStub = sinon.stub(fs, 'readFile', function (path, cb) {  
        return cb(null, 'filecontent');
    });
     
    expect(readFileStub).to.be.called;  
    readFileStub.restore(); 
    

    在单元测试中:Stub是完全模拟一个外部依赖,而Mock常用来判断测试通过还是失败。

    什么是测试金字塔?

    测试金字塔指的是: 当我们在编写测试用例时,底层的单元测试应该远比上层的端到端测试要多。
    更多细节

    相关文章

      网友评论

          本文标题:nodejs(三)

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