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学习笔记(二) js一些基本概念
Jun 18 Javascript
JavaScript定义变量和变量优先级问题探讨
Oct 11 Javascript
JS实现仿QQ聊天窗口抖动特效
May 10 Javascript
jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
Sep 14 Javascript
jquery插件uploadify实现带进度条的文件批量上传
Dec 13 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
JavaScript驾驭网页-CSS与DOM
Mar 24 Javascript
bootstrap datepicker 与bootstrapValidator同时使用时选择日期后无法正常触发校验的解决思路
Sep 28 Javascript
微信小程序实现多个按钮toggle功能的实例
Jun 13 Javascript
bootstrap模态框嵌套、tabindex属性、去除阴影的示例代码
Oct 17 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 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语法(4)
2006/10/09 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
PHPExcel实现的读取多工作表操作示例
2020/04/14 PHP
基于JavaScript如何制作遮罩层对话框
2016/01/26 Javascript
理解javascript中的严格模式
2016/02/01 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
2016/02/06 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
自定义require函数让浏览器按需加载Js文件
2016/11/24 Javascript
jQuery实现圣诞节礼物动画案例解析
2016/12/25 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
基于JavaScript实现评论框展开和隐藏功能
2017/08/25 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
JavaScript实现预览本地上传图片功能完整示例
2019/03/08 Javascript
node运行js获得输出的三种方式示例详解
2020/07/02 Javascript
jquery实现简单拖拽效果
2020/07/20 jQuery
浅谈vue在html中出现{{}}的原因及解决方式
2020/11/16 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Django接受前端数据的几种方法总结
2016/11/04 Python
python实现unicode转中文及转换默认编码的方法
2017/04/29 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
Canvas高级路径操作之拖拽对象的实现
2019/08/05 HTML / CSS
介绍一下Prototype的$()函数,$F()函数,$A()函数都是什么作用?
2014/03/05 面试题
vue实现倒计时功能
2021/03/24 Vue.js
幼儿园春游活动方案
2014/01/19 职场文书
财务会计大学生自我评价
2014/04/09 职场文书
保护动物倡议书
2014/04/15 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
2014年幼儿园国庆主题活动方案
2014/09/16 职场文书
学校总务处领导干部个人对照检查材料思想汇报
2014/10/06 职场文书
公安领导班子四风问题个人整改措施思想汇报
2014/10/09 职场文书
党员群众路线整改措施及今后努力方向
2014/10/28 职场文书
升学宴来宾致辞
2015/07/27 职场文书
python cv2图像质量压缩的算法示例
2021/06/04 Python
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python