源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Node.js测试中的Mock文件系统详解

  • 时间:2021-10-04 19:10 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Node.js测试中的Mock文件系统详解
[b]Mock文件系统相关的工具包括:[/b]     [code]Mock fs[/code] 模块的工具[code]mock-fs [/code]。     [code]Mock require[/code] 模块的工具[code]mock-require[/code] 。 [b]安装[/b] [code]mock-fs[/code]和 [code]mock-require [/code]都是NPM软件包,在项目中可通过npm直接安装:
npm install mock-fs mock-require --save
[b]Mock fs 模块[/b] 通过[code]mock()[/code]方法可以创建多个文件的Mock并立即生效, 此后对fs的调用都会访问这些Mock文件。 调用[code]mock.restore()[/code]可取消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');
  });
 });
});
[b]Mock require 机制[/b] [code]mock-fs[/code]的原理是重写fs模块的文件读写功能,重定向到Mock文件。 所以对[code]require[/code]并不起作用。 为了让[code]require[/code]读取[code]Mock[/code]文件,只能重写[code]require[/code]方法。[code] mock-require[/code]便是封装了该操作。 通过[code]mock[/code]方法进行[code]Mock[/code],通过[code]mock.stopAll[/code]停止[code]Mock[/code]并恢复[code]require[/code]。
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();
 });
[b]总结[/b] 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部