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 相关文章推荐
jquery中EasyUI实现同步树
Mar 01 Javascript
用JavaScript实现让浏览器停止载入页面的方法
Jan 19 Javascript
你可能不知道的JSON.stringify()详解
Aug 17 Javascript
JS实现提交表单前的数字及邮箱校检功能
Nov 13 Javascript
在vue中安装使用vux的教程详解
Sep 16 Javascript
CKEditor4配置与开发详细中文说明文档
Oct 08 Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 Javascript
详解es6新增数组方法简便了哪些操作
May 09 Javascript
产制造追溯系统之通过微信小程序实现移动端报表平台
Jun 03 Javascript
Vue.js实现大转盘抽奖总结及实现思路
Oct 09 Javascript
jQuery模仿ToDoList实现简单的待办事项列表
Dec 30 jQuery
vue 给数组添加新对象并赋值
Apr 20 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
ThinkPHP惯例配置文件详解
2014/07/14 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
共享自己写一个框架DreamScript
2007/01/20 Javascript
运用jquery实现table单双行不同显示并能单行选中
2009/07/25 Javascript
javascript 实用的文字链提示框效果
2010/06/30 Javascript
JS中confirm,alert,prompt函数区别分析
2011/01/17 Javascript
精心挑选的15款优秀jQuery 本特效插件和教程
2012/08/06 Javascript
javascript在子页面中函数无法调试问题解决方法
2014/01/17 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
JavaScript获取页面中表单(form)数量的方法
2015/04/03 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
jQuery基础的工厂函数以及定时器的经典实例分析
2016/05/20 Javascript
JS实现的自定义显示加载等待图片插件(loading.gif)
2016/06/17 Javascript
JavaScript实现提交模式窗口后刷新父窗口数据的方法
2017/06/16 Javascript
详解Node全局变量global模块
2017/09/28 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
JS轮播图的实现方法
2020/08/24 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
vue打开其他项目页面并传入数据详解
2020/11/25 Vue.js
[03:00]《DAC最前线》之欧美新秀VS老将
2015/02/01 DOTA
[01:05:29]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第二场 1月24日
2021/03/11 DOTA
给Python中的MySQLdb模块添加超时功能的教程
2015/05/05 Python
Python socket编程实例详解
2015/05/27 Python
解决python删除文件的权限错误问题
2018/04/24 Python
python得到qq句柄,并显示在前台的方法
2018/10/14 Python
Python面向对象程序设计类变量与成员变量、类方法与成员方法用法分析
2019/04/12 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
2019/06/24 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
Python可变对象与不可变对象原理解析
2020/02/25 Python
python多线程semaphore实现线程数控制的示例
2020/08/10 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
Python 微信公众号文章爬取的示例代码
2020/11/30 Python
Weblogic和WebSphere不同特点
2012/05/09 面试题
旅游管理专业生自荐信范文
2014/01/02 职场文书
幸福中国演讲稿
2014/09/12 职场文书
2016年小学生寒假总结
2015/10/10 职场文书