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 相关文章推荐
Javascript Global对象
Aug 13 Javascript
真正的JQuery.ajax传递中文参数的解决方法
May 28 Javascript
新发现一个骗链接的方法(js读取cookies)
Jan 11 Javascript
formStorage 基于jquery的一个插件(存储表单中元素的状态到本地)
Jan 20 Javascript
javascript时间函数基础介绍
Mar 28 Javascript
jquery获取tagName再进行判断
May 29 Javascript
使用AOP改善javascript代码
May 01 Javascript
Jquery技巧(必须掌握)
Mar 16 Javascript
在Vue组件化中利用axios处理ajax请求的使用方法
Aug 25 Javascript
jQuery实现火车票买票城市选择切换功能
Sep 15 jQuery
详解ES6中的三种异步解决方案
Jun 28 Javascript
如何阻止小程序遮罩层下方图层滚动
Sep 05 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
Zend Framework实现自定义过滤器的方法
2016/12/09 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
JavaScript与函数式编程解释
2007/04/27 Javascript
jquery blockUI 遮罩不能消失与不能提交的解决方法
2011/09/17 Javascript
Javascript insertAfter() 实现函数代码
2011/10/12 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
2014/04/20 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
第四篇Bootstrap网格系统偏移列和嵌套列
2016/06/21 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
SpringBoot+Vue前后端分离,使用SpringSecurity完美处理权限问题的解决方法
2018/01/09 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
element-ui组件table实现自定义筛选功能的示例代码
2019/03/15 Javascript
Vue使用Clipboard.JS在h5页面中复制内容实例详解
2019/09/03 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
django 2.0更新的10条注意事项总结
2018/01/05 Python
Python3 SSH远程连接服务器的方法示例
2018/12/29 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
python自动结束mysql慢查询会话的实例代码
2019/10/27 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
python3:excel操作之读取数据并返回字典 + 写入的案例
2020/09/01 Python
python自动化发送邮件实例讲解
2021/01/04 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
美德好少年主要事迹
2014/01/29 职场文书
危爆物品安全大检查大整治工作方案
2014/05/03 职场文书
人民调解员培训方案
2014/06/05 职场文书
学生安全责任书范本
2014/07/24 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书
不尊敬老师检讨书范文
2014/11/19 职场文书
2019新员工心得体会
2019/06/25 职场文书
Python 视频画质增强
2022/04/28 Python