Skip to content

Commit 5c4ee7a

Browse files
committed
完善测试案例
1 parent dba7200 commit 5c4ee7a

File tree

5 files changed

+161
-15
lines changed

5 files changed

+161
-15
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
"babel-eslint": "^10.0.1",
3030
"babel-jest": "^24.1.0",
3131
"chalk": "^2.4.2",
32-
"eslint": "^5.14.1",
32+
"eslint": "^5.15.0",
3333
"eslint-plugin-vue": "^5.2.2",
3434
"jest": "^24.1.0",
3535
"lodash": "^4.17.11",

src/index.js

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -184,15 +184,23 @@ export default class Modular {
184184
getExtension (name) {
185185
return this._extensions[name] || {}
186186
}
187+
// 获取全部有效的扩展配置
188+
getExtensions () {
189+
return this._extensions
190+
}
187191
// 获取指定名称的扩展点定义
188192
getExtensionPoint (name) {
189193
return this._extensionPoints[name] || {}
190194
}
195+
// 获取全部有效的扩展点定义
196+
getExtensionPoints () {
197+
return this._extensionPoints
198+
}
191199
// 启动模块化应用
192200
start () {
193201
this._modules.forEach(module => {
194202
if (module.activator && module.activator.start) {
195-
module.activator.start(this)
203+
module.activator.start(this, module)
196204
}
197205
})
198206
}
@@ -202,6 +210,6 @@ export default class Modular {
202210
// 记录日志
203211
_log (info) {
204212
this._logs.push(info)
205-
console.log(info)
213+
// console.log(info)
206214
}
207215
}

test/unit/modular.data.js

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,16 @@
1+
const logs = []
2+
const activator = {
3+
logs,
4+
start (modular, module) {
5+
logs.push(module.name)
6+
},
7+
clean () {
8+
logs.splice(0, logs.length)
9+
}
10+
}
11+
112
export default {
13+
activator,
214
m1: {
315
name: 'm1',
416
dependencies: [
@@ -37,5 +49,70 @@ export default {
3749
'm4',
3850
'm5'
3951
]
52+
},
53+
m8: {
54+
name: 'm8',
55+
extensionPoints: {
56+
'ep1': {},
57+
'ep2': {}
58+
},
59+
activator
60+
},
61+
m9: {
62+
name: 'm9',
63+
dependencies: [
64+
'm8'
65+
],
66+
extensionPoints: {
67+
'ep1': {},
68+
'ep3': {}
69+
},
70+
extensions: {
71+
'ep1': {
72+
m9: 'm9-ext1'
73+
}
74+
},
75+
activator
76+
},
77+
m10: {
78+
name: 'm10',
79+
dependencies: [
80+
'm8',
81+
'm9'
82+
],
83+
extensionPoints: {
84+
'ep4': {},
85+
'ep5': {}
86+
},
87+
extensions: {
88+
'ep0': {
89+
m10: 'm10-ext0'
90+
},
91+
'ep1': {
92+
m10: 'm10-ext1',
93+
m9: 'm10->m9-ext1'
94+
}
95+
},
96+
activator
97+
},
98+
ep1: {
99+
module: 'm8',
100+
config: {}
101+
},
102+
ep2: {
103+
module: 'm8',
104+
config: {}
105+
},
106+
ep3: {
107+
module: 'm9',
108+
config: {}
109+
},
110+
ep4: {
111+
module: 'm10',
112+
config: {}
113+
},
114+
ep5: {
115+
module: 'm10',
116+
config: {}
40117
}
41118
}

test/unit/modular.spec.js

Lines changed: 66 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ import Modular from '@/index'
22
import data from './modular.data'
33
import { cloneDeep } from 'lodash'
44

5+
const application = { name: 'Application' }
6+
57
describe('Modular 单元测试', () => {
68
it('默认构造函数测试', () => {
79
const modular = new Modular()
@@ -22,7 +24,7 @@ describe('Modular 单元测试', () => {
2224
expect(() => { delete app2.name }).toThrowError(TypeError)
2325
// 默认值测试
2426
expect(app).toBe(app2)
25-
expect(app).toEqual({ name: 'Application' })
27+
expect(app).toEqual(application)
2628
expect(modules).toEqual([app])
2729
expect(exts).toEqual({})
2830
expect(points).toEqual({})
@@ -39,14 +41,35 @@ describe('Modular 单元测试', () => {
3941
data.m3
4042
])
4143
})
42-
expect(modular.getModules()).toEqual([data.m3, data.m2, data.m1, { name: 'Application' }])
44+
expect(modular.getModules()).toEqual([data.m3, data.m2, data.m1, application])
4345
})
4446

4547
it('扩展配置覆盖测试', () => {
48+
const modular = new Modular({
49+
modules: cloneDeep([
50+
data.m8,
51+
data.m9,
52+
data.m10
53+
])
54+
})
55+
expect(modular.getModules()).toEqual([
56+
data.m8,
57+
data.m9,
58+
data.m10,
59+
application
60+
])
61+
expect(modular.getExtensionPoints()).toEqual({
62+
ep1: data.ep1,
63+
ep2: data.ep2,
64+
ep3: data.ep3,
65+
ep4: data.ep4,
66+
ep5: data.ep5
67+
})
68+
expect(modular.getExtensions()).toEqual({ ep1: { m9: 'm10->m9-ext1', m10: 'm10-ext1' } })
4669
})
4770

48-
it('异常信息记录测试', () => {
49-
const modular = new Modular({
71+
it('异常测试', () => {
72+
let modular = new Modular({
5073
modules: cloneDeep([
5174
data.m4,
5275
data.m1,
@@ -70,7 +93,45 @@ describe('Modular 单元测试', () => {
7093
data.m3,
7194
data.m2,
7295
data.m1,
73-
{ name: 'Application' }
96+
application
97+
])
98+
99+
modular = new Modular({
100+
modules: cloneDeep([
101+
data.m8,
102+
data.m9,
103+
data.m10
104+
])
105+
})
106+
expect(modular.getLogs()).toEqual([
107+
{ level: 'error', code: 'E05', message: '重复的 extensionPoint 定义 ep1', data: [{ module: 'm8', config: {} }, data.m9] },
108+
{ level: 'error', code: 'E06', message: 'extensionPoint 定义不存在 ep0', data: [{ m10: 'm10-ext0' }, data.m10] }
74109
])
110+
expect(modular.getModules()).toEqual([
111+
data.m8,
112+
data.m9,
113+
data.m10,
114+
application
115+
])
116+
expect(modular.getExtensionPoints()).toEqual({
117+
ep1: data.ep1,
118+
ep2: data.ep2,
119+
ep3: data.ep3,
120+
ep4: data.ep4,
121+
ep5: data.ep5
122+
})
123+
})
124+
125+
it('start() 测试', () => {
126+
const modular = new Modular({
127+
modules: cloneDeep([
128+
data.m8,
129+
data.m9,
130+
data.m10
131+
])
132+
})
133+
data.activator.clean() // 清理测试记录
134+
modular.start()
135+
expect(data.activator.logs).toEqual(['m8', 'm9', 'm10'])
75136
})
76137
})

0 commit comments

Comments
 (0)