nodejs(三)

2018-12-17  本文已影响4人  宋song一

什么是事件循环

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常用来判断测试通过还是失败。

什么是测试金字塔?

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

上一篇下一篇

猜你喜欢

热点阅读