1# Mock 2 3#### 介绍 4 5提供上游(IDE)触发编译构建时的输入rollup对象、类私有方法导出的Mock能力,供UT测试使用。 6 7#### 软件架构 8 9* mock/class_mock: 类私有方法Export Mock源码 10* mock/rollup_mock: DevEco上游rollup环节输入 Mock源码 11 12#### 快速开始 13 14ets-loader UT测试采用mocha架构实现,在此基础上介绍Rollup Mock、类私用方法Mock使用方法。 15 16##### Rollup Mock使用 17 18``` 19import RollUpMock from './mock/rollup_mock/rollup_plugin_mock'; 20 21mocha.beforeEach(function () { 22 this.rollup = new RollUpMock(); 23}); 24 25mocha.afterEach(() => { 26 delete this.rollup; 27}); 28 29mocha.it('1-1: build debug, getBuildModeInLowerCase', function () { 30 this.rollup.build(); 31 let buildMode = getBuildModeInLowerCase(this.rollup.share.projectConfig); 32 expect(buildMode == 'debug').to.be.true; 33}); 34``` 35如上,使用rollup数据前,请先在beforeEach/before时机创建RollupMock对象(默认为debug模式,请根据实际场景选择使用beforeEach或者before),调用build接口模拟IDE build Rollup初始化过程。同理preview接口模拟IDE preview Rollup初始化过程,hotreload接口模拟IDE hot reload Rollup初始化过程。 36 37##### 类私用方法Mock使用 38 39``` 40import { ModuleHotfixMode } from '../../../../lib/fast_build/ark_compiler/module/module_hotfix_mode'; 41 42class ModuleHotfixModeMock extends ModuleHotfixMode { 43 generateEs2AbcCmdForHotfixMock() { 44 this.generateEs2AbcCmdForHotfix(); 45 } 46} 47 48export default ModuleHotfixModeMock; 49``` 50 51在测试私有方法前,请先参照上述案例追加类私有方法Mock实现。 52``` 53import RollUpMock from '../mock/rollup_mock/rollup_plugin_mock'; 54import ModuleHotfixModeMock from '../mock/class_mock/module_hotfix_mode_mock'; 55 56mocha.beforeEach(function () { 57 this.rollup = new RollUpMock(); 58}); 59 60mocha.afterEach(() => { 61 delete this.rollup; 62}); 63 64mocha.it('1-1: build debug, generateEs2AbcCmdForHotfix', function () { 65 this.rollup.build(); 66 let hotFixMode = new ModuleHotfixModeMock(this.rollup); 67 hotFixMode.generateEs2AbcCmdForHotfixMock(); 68}); 69``` 70如上,调用Mock提供的接口,间接测试类私有方法。 71