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获取select选中的option的text示例代码
Dec 19 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
Mar 01 Javascript
Javascript实现鼠标框选操作  不是点击选取
Apr 14 Javascript
checkbox批量选中,获取选中项的值的简单实例
Jun 28 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
AngularJS 购物车全选/取消全选功能的实现方法
Aug 14 Javascript
shiro授权的实现原理
Sep 21 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
layui从数据库中获取复选框的值并默认选中方法
Aug 15 Javascript
vue项目中在外部js文件中直接调用vue实例的方法比如说this
Apr 28 Javascript
JS前端使用canvas实现扩展物体类和事件派发
Aug 05 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
让CodeIgniter数据库缓存自动过期的处理的方法
2014/06/12 PHP
php实现俄罗斯乘法实例
2015/03/07 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
PHP ADODB实现分页功能简单示例
2018/05/25 PHP
one.php 多项目、函数库、类库 统一为一个版本的方法
2020/08/24 PHP
一些mootools的学习资源
2010/02/07 Javascript
jquery json 实例代码
2010/12/02 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
Javascript中Date类型和Math类型详解
2016/02/27 Javascript
vue2.0开发实践总结之疑难篇
2016/12/07 Javascript
Angular动态添加、删除输入框并计算值实例代码
2017/03/29 Javascript
Angular2开发环境搭建教程之VS Code
2017/12/15 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
js实现简单点赞操作
2020/03/17 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
[51:34]Ti4主赛事胜者组 DK vs EG 2
2014/07/19 DOTA
让python同时兼容python2和python3的8个技巧分享
2014/07/11 Python
Python图算法实例分析
2016/08/13 Python
对tensorflow 的模型保存和调用实例讲解
2018/07/28 Python
python实现石头剪刀布程序
2021/01/20 Python
Python实现使用request模块下载图片demo示例
2019/05/24 Python
Django ORM实现按天获取数据去重求和例子
2020/05/18 Python
Python代码中如何读取键盘录入的值
2020/05/27 Python
scrapy框架携带cookie访问淘宝购物车功能的实现代码
2020/07/07 Python
用python进行视频剪辑
2020/11/02 Python
全球烹饪课程的领先预订平台:Cookly
2020/01/28 全球购物
银行职员思想汇报
2013/12/31 职场文书
电气自动化个人求职信范文
2014/02/03 职场文书
创新型城市实施方案
2014/03/06 职场文书
长城导游词
2015/01/30 职场文书
学生会干部任命书
2015/09/21 职场文书
《我的长生果》教学反思
2016/02/20 职场文书
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL
netty 实现tomcat的示例代码
2022/06/05 Servers