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 相关文章推荐
html下载本地
Jun 19 Javascript
js null undefined 空区别说明
Jun 13 Javascript
javascript字符串拼接的效率问题
Dec 25 Javascript
浅析JavaScript中的同名标识符优先级
Dec 06 Javascript
修改jquery中dialog的title属性方法(推荐)
Aug 26 Javascript
H5用户注册表单页 注册模态框!
Sep 17 Javascript
js时间戳和c#时间戳互转方法(推荐)
Feb 15 Javascript
vue.js vue-router如何实现无效路由(404)的友好提示
Dec 20 Javascript
vue 多入口文件搭建 vue多页面搭建的实例讲解
Mar 12 Javascript
Javascript Promise用法详解
May 10 Javascript
详解VUE前端按钮权限控制
Apr 26 Javascript
对Layer UI 模块化的用法详解
Sep 26 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
解析php中die(),exit(),return的区别
2013/06/20 PHP
php获取bing每日壁纸示例分享
2014/02/25 PHP
PHP 面向对象程序设计(oop)学习笔记 (二) - 静态变量的属性和方法及延迟绑定
2014/06/12 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
在js中判断checkboxlist(.net控件客户端id)是否有选中
2013/04/11 Javascript
jQuery实现菜单式图片滑动切换
2015/03/14 Javascript
Bootstrap基本插件学习笔记之Alert警告框(20)
2016/12/08 Javascript
JavaScript中的call和apply的用途以及区别
2017/01/11 Javascript
JavaScript表单验证完美代码
2017/03/02 Javascript
移动端使用localResizeIMG4压缩图片
2017/04/22 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
vue富文本编辑器组件vue-quill-edit使用教程
2018/09/21 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
使用node搭建自动发图文微博机器人的方法
2019/03/22 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
剖析Python的Twisted框架的核心特性
2016/05/25 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
python使用wxpy实现微信消息防撤回脚本
2019/04/29 Python
python实现弹跳小球
2019/05/13 Python
解决Python设置函数调用超时,进程卡住的问题
2019/08/08 Python
30秒学会30个超实用Python代码片段【收藏版】
2019/10/15 Python
Python从列表推导到zip()函数的5种技巧总结
2019/10/23 Python
python中如何打包用户自定义模块
2020/09/23 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
应聘医药销售自荐书范文
2014/02/08 职场文书
会计求职信范文
2014/05/24 职场文书
航海技术专业毕业生推荐信
2014/07/09 职场文书
小学三八妇女节活动总结
2015/02/06 职场文书
研究生个人学年总结
2015/02/14 职场文书
《葡萄沟》教学反思
2016/02/23 职场文书
一次MySQL启动导致的事故实战记录
2021/09/15 MySQL
十大最强飞行系宝可梦,BUG燕上榜,第二是飞行系王者
2022/03/18 日漫