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 相关文章推荐
jQuery 菜单随滚条改为以定位方式(固定要浏览器顶部)
May 24 Javascript
把input初始值不写value的具体实现方法
Jul 04 Javascript
js阻止默认浏览器行为与冒泡行为的实现代码
May 15 Javascript
通过sails和阿里大于实现短信验证
Jan 04 Javascript
详解JS中定时器setInterval和setTImeout的this指向问题
Jan 06 Javascript
微信小程序上传图片到服务器实例代码
Nov 07 Javascript
vue中的provide/inject的学习使用
May 09 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 Javascript
JavaScript跳出循环的三种方法(break, return, continue)
Jul 30 Javascript
微信小程序模板消息推送的两种实现方式
Aug 27 Javascript
file-loader打包图片文件时路径错误输出为[object-module]的解决方法
Jan 03 Javascript
uni-app使用微信小程序云函数的步骤示例
May 22 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
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP实现自动发送邮件功能代码(qq 邮箱)
2017/08/18 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
Jquery 最近浏览过的商品的功能实现代码
2010/05/14 Javascript
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
JS特权方法定义作用以及与公有方法的区别
2013/03/18 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
node.js中的fs.writeFile方法使用说明
2014/12/14 Javascript
浅谈jQuery中replace()方法
2015/05/13 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
JS调用Android、Ios原生控件
2017/01/06 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
2017/05/03 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
微信小程序实现简单跑马灯效果
2020/05/26 Javascript
在JavaScript中使用严格模式(Strict Mode)
2019/06/13 Javascript
JavaScript定时器常见用法实例分析
2019/11/15 Javascript
浅谈Pytorch torch.optim优化器个性化的使用
2020/02/20 Python
HTML5打开手机扫码功能及优缺点
2017/11/27 HTML / CSS
中国领先的专业家电网购平台:国美在线
2016/12/25 全球购物
Booking.com西班牙:全球酒店预订
2018/03/30 全球购物
英国Radley包德国官网:Radley London德国
2019/11/18 全球购物
Java语言程序设计测试题选择题部分
2014/04/03 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
洗发露广告词
2014/03/14 职场文书
企业授权委托书范本
2014/04/02 职场文书
大队委竞选演讲稿
2014/04/28 职场文书
施工工地安全标语
2014/06/07 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
检讨书大全
2015/01/27 职场文书
校园安全学习心得体会
2016/01/18 职场文书
Java基础——Map集合
2022/04/01 Java/Android