• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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