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 内存释放问题
Apr 25 Javascript
jquery限定文本框只能输入数字(整数和小数)
Jan 08 Javascript
详解微信小程序开发之下拉刷新 上拉加载
Nov 24 Javascript
vue子组件使用自定义事件向父组件传递数据
May 27 Javascript
VUE axios发送跨域请求需要注意的问题
Jul 06 Javascript
js提取中文拼音首字母的封装工具类
Mar 12 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
Vue项目路由刷新的实现代码
Apr 17 Javascript
详解JavaScript对数组操作(添加/删除/截取/排序/倒序)
Apr 28 Javascript
详解mpvue开发微信小程序基础知识
Sep 23 Javascript
jquery插件实现轮播图效果
Oct 19 jQuery
Vue中使用JsonView来展示Json树的实例代码
Nov 16 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冒泡排序算法的深入理解
2013/06/09 PHP
PHP弹出提示框并跳转到新页面即重定向到新页面
2014/01/24 PHP
php网页标题中文乱码的有效解决方法
2014/03/05 PHP
实现PHP中session存储及删除变量
2018/10/15 PHP
PHP的imageTtfText()函数深入详解
2021/03/03 PHP
JS实现定时页面弹出类似QQ新闻的提示框
2013/11/07 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
JavaScript阻止浏览器返回按钮的方法
2015/03/18 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JS实战篇之收缩菜单表单布局
2016/12/10 Javascript
AngularJS中的拦截器实例详解
2017/04/07 Javascript
禁止弹窗中蒙层底部页面跟随滚动的几种方法
2017/12/07 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
详解vue中移动端自适应方案
2019/05/05 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
antd日期选择器禁止选择当天之前的时间操作
2020/10/29 Javascript
python使用xauth方式登录饭否网然后发消息
2014/04/11 Python
python实现计算资源图标crc值的方法
2014/10/05 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python生成二维码的实例详解
2017/10/29 Python
Python爬取数据并写入MySQL数据库的实例
2018/06/21 Python
pyQt4实现俄罗斯方块游戏
2018/06/26 Python
python读取图片任意范围区域
2019/01/23 Python
pytorch 归一化与反归一化实例
2019/12/31 Python
基于jupyter代码无法在pycharm中运行的解决方法
2020/04/21 Python
旧时光糖果:Old Time Candy
2018/02/05 全球购物
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
小米俄罗斯授权商店:Xiaomi俄罗斯
2019/12/08 全球购物
招股说明书范本
2014/05/06 职场文书
个人剖析材料范文
2014/09/30 职场文书
离婚协议书格式
2015/01/26 职场文书
护士旷工检讨书
2015/08/15 职场文书
Python Pycharm虚拟下百度飞浆PaddleX安装报错问题及处理方法(亲测100%有效)
2021/05/24 Python
移除Selenium中window.navigator.webdriver值
2022/06/10 Python