모의 파일 시스템 관련 도구는 다음과 같습니다.
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(); });