Node.js测试中的Mock文件系统详解


Posted in Javascript onNovember 21, 2016

Mock文件系统相关的工具包括:

    Mock fs 模块的工具mock-fs

    Mock require 模块的工具mock-require

安装

mock-fsmock-require 都是NPM软件包,在项目中可通过npm直接安装:

npm install mock-fs mock-require --save

Mock fs 模块

通过mock()方法可以创建多个文件的Mock并立即生效, 此后对fs的调用都会访问这些Mock文件。 调用mock.restore()可取消Mock并恢复fs。

var fs = require('fs');
var mock = require('mock-fs');

describe('fs', function() {
 beforeEach(function() {
  mock({
   './CNAME': 'harttle.com',
   './_config.yml': 'empty'
  });
 });
 afterEach(function() {
  mock.restore();
 });
 describe('#readFileSync()', function() {
  it('should read all content', function() {
   var str = fs.readFileSync('CNAME', 'utf8');
   expect(str).to.equal('harttle.com');
  });
 });
});

Mock require 机制

mock-fs的原理是重写fs模块的文件读写功能,重定向到Mock文件。 所以对require并不起作用。 为了让require读取Mock文件,只能重写require方法。 mock-require便是封装了该操作。

通过mock方法进行Mock,通过mock.stopAll停止Mock并恢复require

const mock = require('mock-require');

describe('parser', function() {
 beforeEach(function() {
  mock('/package.json', {
   "name": "sample-module",
   "version": "1.0.0",
   "view": "htmls/my-html.hbs",
   "router": "svr.js"
  });
 });
 afterEach(function() {
  mock.stopAll();
 });

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

Javascript 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
JSONP 跨域访问代理API-yahooapis实现代码
Dec 02 Javascript
Jquery创建一个层当鼠标移动到层上面不消失效果
Dec 12 Javascript
Javascript中call和apply函数的比较和使用实例
Feb 03 Javascript
js实现单击图片放大图片的方法
Feb 17 Javascript
如何用JS判断两个数字的大小
Jul 21 Javascript
xmlplus组件设计系列之路由(ViewStack)(7)
May 02 Javascript
详解http访问解析流程原理
Oct 18 Javascript
javascript中的隐式调用
Feb 10 Javascript
微信小程序上传图片功能(附后端代码)
Jun 19 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
Aug 17 Javascript
vue实现计算器功能
Feb 22 Javascript
JavaScript中boolean类型之三种情景实例代码
Nov 21 #Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 #Javascript
基于jQuery实现Accordion手风琴自定义插件
Oct 13 #Javascript
详解JSON1:使用TSQL查询数据和更新JSON数据
Nov 21 #Javascript
js原生实现FastClick事件的实例
Nov 20 #Javascript
常用原生js自定义函数总结
Nov 20 #Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 #Javascript
You might like
收音机指标测试方法及仪器
2021/03/01 无线电
自己做矿石收音机
2021/03/02 无线电
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
js 图片等比例缩放代码
2010/05/13 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
input:checkbox多选框实现单选效果跟radio一样
2014/06/16 Javascript
页面加载完后自动执行一个方法的js代码
2014/09/06 Javascript
javascript实现仿IE顶部的可关闭警告条
2015/05/05 Javascript
JavaScript创建闭包的两种方式的优劣与区别分析
2015/06/22 Javascript
javascript中JSON对象与JSON字符串相互转换实例
2015/07/11 Javascript
完美实现八种js焦点轮播图(下篇)
2020/04/20 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
JavaScript实现图片无缝滚动效果
2017/07/07 Javascript
详解如何用模块化的方式写vuejs
2017/12/16 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
JQuery Ajax跨域调用和非跨域调用问题实例分析
2019/04/16 jQuery
[01:10:58]KG vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python中字典dict常用操作方法实例总结
2015/04/04 Python
Python解析树及树的遍历
2016/02/03 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
2016/04/23 Python
详解Python中的__new__、__init__、__call__三个特殊方法
2016/06/02 Python
Python算术运算符实例详解
2017/05/31 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
python实现简单的五子棋游戏
2020/09/01 Python
阿里旅行:飞猪
2017/01/05 全球购物
儿科护士实习自我鉴定
2013/10/17 职场文书
初中化学教学反思
2014/01/23 职场文书
党的群众路线教育实践活动总结材料
2014/10/30 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
Python基础详解之邮件处理
2021/04/28 Python
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库