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 相关文章推荐
js下用eval生成JSON对象
Sep 17 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
js删除Array数组中指定元素的两种方法
Aug 03 Javascript
微信小程序 实战程序简易新闻的制作
Jan 09 Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 Javascript
React为 Vue 引入容器组件和展示组件的教程详解
May 03 Javascript
axios向后台传递数组作为参数的方法
Aug 11 Javascript
详解webpack打包vue项目之后生成的dist文件该怎么启动运行
Sep 06 Javascript
layer ui 导入文件之前传入数据的实例
Sep 23 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 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
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
详解PHP中array_rand函数的使用方法
2016/09/11 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
jquery ajax提交表单数据的两种方式
2009/11/24 Javascript
JS焦点图切换,上下翻转
2011/05/12 Javascript
Js 时间间隔计算的函数(间隔天数)
2011/11/15 Javascript
国外大牛IE版本检测!现在IE都到9了,IE检测代码
2012/01/04 Javascript
基于jquery的点击链接插入链接内容的代码
2012/07/31 Javascript
ajax请求get与post的区别总结
2013/11/04 Javascript
jquery.ajax的url中传递中文乱码问题的解决方法
2014/02/07 Javascript
jquery中添加属性和删除属性
2015/06/03 Javascript
跟我学习javascript的函数调用和构造函数调用
2015/11/16 Javascript
深入理解事件冒泡(Bubble)和事件捕捉(capture)
2016/05/28 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
bootstrap警告框示例代码分享
2017/05/17 Javascript
vue-cli开发时,关于ajax跨域的解决方法(推荐)
2018/02/03 Javascript
详解plotly.js 绘图库入门使用教程
2018/02/23 Javascript
详解在React中跨组件分发状态的三种方法
2018/08/09 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
2019/04/11 Javascript
python time模块用法实例详解
2014/09/11 Python
Python实现抓取网页并且解析的实例
2014/09/20 Python
详细讲解Python中的文件I/O操作
2015/05/24 Python
python出现"IndentationError: unexpected indent"错误解决办法
2017/10/15 Python
python将视频转换为全字符视频
2019/04/26 Python
Windows 安装 Anaconda3+PyCharm的方法步骤
2019/06/13 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
Python(PyS60)实现简单语音整点报时
2019/11/18 Python
Python基于wordcloud及jieba实现中国地图词云图
2020/06/09 Python
美国波道夫·古德曼百货官网:Bergdorf Goodman
2017/11/07 全球购物
英国最专业的健身器材供应商之一:Best Gym Equipment
2017/12/22 全球购物
正风肃纪剖析材料
2014/02/18 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
三月法制宣传月活动总结
2014/07/03 职场文书
走进毛泽东观后感
2015/06/04 职场文书
志愿者工作心得体会
2016/01/15 职场文书