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 div 弹出可拖动窗口
Feb 26 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
C++中的string类的用法小结
Aug 07 Javascript
jQuery原理系列-常用Dom操作详解
Jun 07 Javascript
基于原生JS实现图片裁剪
Aug 01 Javascript
jQuery中的100个技巧汇总
Dec 15 Javascript
angular仿支付宝密码框输入效果
Mar 25 Javascript
原生JavaScript实现remove()和recover()功能示例
Jul 24 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
Bootstrap table 实现树形表格联动选中联动取消功能
Sep 30 Javascript
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
vue实现一个获取按键展示快捷键效果的Input组件
Jan 13 Vue.js
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
Linux系统下使用XHProf和XHGui分析PHP运行性能
2015/12/08 PHP
WordPress中自定义后台管理界面配色方案的小技巧
2015/12/29 PHP
Array对象方法参考
2006/10/03 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
Javascript中的Callback方法浅析
2015/03/15 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
JavaScript高级教程5.6之基本包装类型(详细)
2015/11/23 Javascript
jQuery滚动新闻实现代码
2016/06/26 Javascript
微信小程序 闭包写法详细介绍
2016/12/14 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
javascript Function函数理解与实战
2017/12/01 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
vue微信分享到朋友圈 vue微信发送给好友
2018/11/28 Javascript
angular中两种表单的区别(响应式和模板驱动表单)
2018/12/06 Javascript
Vue-cli3.X使用px2 rem遇到的问题及解决方法
2019/08/08 Javascript
vue-devtools的安装和使用步骤详解
2019/10/17 Javascript
python3调用百度翻译API实现实时翻译
2018/08/16 Python
python tornado微信开发入门代码
2018/08/24 Python
Python实现判断一个整数是否为回文数算法示例
2019/03/02 Python
Python 读取xml数据,cv2裁剪图片实例
2020/03/10 Python
python3通过qq邮箱发送邮件以及附件
2020/05/20 Python
python 实现围棋游戏(纯tkinter gui)
2020/11/13 Python
使用css3制作动感导航条示例
2014/01/26 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
房地产财务管理制度
2014/02/02 职场文书
上课打牌的检讨书
2014/02/15 职场文书
酒店秘书求职信范文
2014/02/17 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
村抢险救灾方案
2014/05/09 职场文书
授权委托书格式
2014/07/31 职场文书
预备党员自我批评思想汇报
2014/10/10 职场文书
维稳工作承诺书
2015/01/20 职场文书
盲山观后感
2015/06/11 职场文书
《绝招》教学反思
2016/02/20 职场文书
详解nginx.conf 中 root 目录设置问题
2021/04/01 Servers
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android