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 this 关键字 详解
Oct 22 Javascript
JavaScript动态创建link标签到head里的方法
Dec 22 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
Aug 04 Javascript
javaScript事件机制兼容【详细整理】
Jul 23 Javascript
浅谈js内置对象Math的属性和方法(推荐)
Sep 19 Javascript
jQuery实现模拟flash头像裁切上传功能示例
Dec 11 Javascript
vue学习笔记之vue1.0和vue2.0的区别介绍
May 17 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
详解vue后台系统登录态管理
Apr 02 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
May 09 Javascript
让Vue响应Map或Set的变化操作
Nov 11 Javascript
Vue ​v-model相关知识总结
Jan 28 Vue.js
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
虫族 ZERG 概述
2020/03/14 星际争霸
递归列出所有文件和目录
2006/10/09 PHP
PHP 将图片按创建时间进行分类存储的实现代码
2010/01/05 PHP
强烈声明: 不要使用(include/require)_once
2013/06/06 PHP
完美解决令人抓狂的zend studio 7代码提示(content Assist)速度慢的问题
2013/06/20 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
Javascript 类与静态类的实现
2010/04/01 Javascript
用XMLDOM和ADODB.Stream实现base64编码解码实现代码
2010/11/28 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
javascript中HTMLDOM操作详解
2014/12/11 Javascript
Javascript中的arguments与重载介绍
2015/03/15 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
2016/08/25 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
2016/10/19 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
BootStrap实现轮播图效果(收藏)
2016/12/30 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
ES6学习教程之Map的常用方法总结
2017/08/03 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
javascript实现日历效果
2019/06/17 Javascript
Vue移动端项目实现使用手机预览调试操作
2020/07/18 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
python格式化字符串实例总结
2014/09/28 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
渗透攻击的测试步骤
2014/06/07 面试题
大学生学习生活的自我评价
2013/11/01 职场文书
餐饮收银员岗位职责
2014/02/07 职场文书
医院护士工作检讨书
2014/10/26 职场文书
2015年外联部工作总结
2015/04/03 职场文书
运动会广播稿100字
2015/08/19 职场文书
解决MySQL Varchar 类型尾部空格的问题
2022/04/06 MySQL