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的匿名函数小结
Dec 31 Javascript
Javascript类库的顶层对象名用户体验分析
Oct 24 Javascript
JavaScript执行效率与性能提升方案
Dec 21 Javascript
Extjs Gird 支持中文拼音排序实现代码
Apr 15 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
Jul 01 Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 Javascript
纯JS实现轮播图
Feb 22 Javascript
JavaScrip关于创建常量的知识点
Dec 07 Javascript
vuejs实现递归树型菜单组件
Jan 13 Javascript
Vue+Mock.js模拟登录和表格的增删改查功能
Jul 26 Javascript
this在vue和小程序中的使用详解
Jan 28 Javascript
vue插槽slot的简单理解与用法实例分析
Mar 14 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP使用get_headers函数判断远程文件是否存在的方法
2014/11/28 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
2015/04/07 PHP
简单谈谈favicon
2015/06/10 PHP
php获得刚插入数据的id 的几种方法总结
2018/05/31 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
laravel http 自定义公共验证和响应的方法
2019/09/29 PHP
模拟select的代码
2011/10/19 Javascript
浅析XMLHttpRequest的缓存问题
2013/12/13 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
详解Vue中过度动画效果应用
2017/05/25 Javascript
JavaScript实现省市联动过程中bug的解决方法
2017/12/04 Javascript
React如何避免重渲染
2018/04/10 Javascript
js实现移动端轮播图
2020/12/21 Javascript
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
浅析Angular 实现一个repeat指令的方法
2019/07/21 Javascript
微信小程序前端promise封装代码实例
2019/08/24 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
mpvue微信小程序的接口请求fly全局拦截代码实例
2019/11/13 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
PHP读取远程txt文档到数组并实现遍历
2020/08/25 Javascript
python实现音乐下载器
2018/04/15 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
Python list和str互转的实现示例
2020/11/16 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
详解CSS 3 中的 calc() 方法
2018/01/12 HTML / CSS
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
城市规划毕业生求职信
2013/10/10 职场文书
电大自我鉴定
2013/10/27 职场文书
企业管理标语
2014/06/10 职场文书
2014年度培训工作总结
2014/11/27 职场文书
关于运动会的广播稿
2015/08/19 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript