>  기사  >  웹 프론트엔드  >  Node.js 테스트의 모의 파일 시스템에 대한 자세한 설명

Node.js 테스트의 모의 파일 시스템에 대한 자세한 설명

高洛峰
高洛峰원래의
2016-12-06 13:21:211567검색

모의 파일 시스템 관련 도구는 다음과 같습니다.

Mock fs 모듈의 mock-fs 도구입니다.

Mock require 모듈의 도구 mock-require입니다.

설치

Mock-fs와 mock-require는 모두 NPM 소프트웨어 패키지로, 프로젝트에서 npm을 통해 직접 설치할 수 있습니다.

npm install mock-fs mock-require --save

모의 fs 모듈

mock() 메서드를 통해 여러 파일의 모의를 생성할 수 있으며 이후 fs 호출이 이러한 모의 파일에 액세스하면 즉시 적용됩니다. 모의를 취소하고 fs를 복원하려면 mock.restore()를 호출하세요.

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 요구 메커니즘

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();
 });


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.