test: basic 2.x compat test case
This commit is contained in:
parent
b3208a5941
commit
232d14c0dd
@ -183,6 +183,11 @@ export function createComponentClassFromOptions(
|
|||||||
set: isGet ? undefined : value.set
|
set: isGet ? undefined : value.set
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
if (key === 'methods') {
|
||||||
|
for (const method in value) {
|
||||||
|
;(ObjectComponent.prototype as any)[method] = value[method]
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return ObjectComponent as ComponentClass
|
return ObjectComponent as ComponentClass
|
||||||
}
|
}
|
||||||
|
32
packages/vue/__tests__/compat.spec.ts
Normal file
32
packages/vue/__tests__/compat.spec.ts
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
;(global as any).__COMPAT__ = true
|
||||||
|
|
||||||
|
import Vue from '../src/index'
|
||||||
|
|
||||||
|
describe('2.x compat build', async () => {
|
||||||
|
test('should work', async () => {
|
||||||
|
const root = document.createElement('div')
|
||||||
|
document.body.appendChild(root)
|
||||||
|
|
||||||
|
const instance = new Vue({
|
||||||
|
data() {
|
||||||
|
return { count: 0 }
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
change() {
|
||||||
|
this.count++
|
||||||
|
}
|
||||||
|
},
|
||||||
|
render(h: any) {
|
||||||
|
return h('div', this.count)
|
||||||
|
}
|
||||||
|
}).$mount(root)
|
||||||
|
|
||||||
|
expect(instance.count).toBe(0)
|
||||||
|
expect(root.textContent).toBe('0')
|
||||||
|
|
||||||
|
instance.change()
|
||||||
|
expect(instance.count).toBe(1)
|
||||||
|
await Vue.nextTick()
|
||||||
|
expect(root.textContent).toBe('1')
|
||||||
|
})
|
||||||
|
})
|
@ -1,6 +1,7 @@
|
|||||||
import {
|
import {
|
||||||
h,
|
h,
|
||||||
render,
|
render,
|
||||||
|
nextTick,
|
||||||
Component,
|
Component,
|
||||||
ComponentOptions,
|
ComponentOptions,
|
||||||
createComponentInstance
|
createComponentInstance
|
||||||
@ -9,8 +10,9 @@ import {
|
|||||||
class Vue extends Component {
|
class Vue extends Component {
|
||||||
static h = h
|
static h = h
|
||||||
static render = render
|
static render = render
|
||||||
|
static nextTick = nextTick
|
||||||
|
|
||||||
constructor(options: ComponentOptions & { el: any }) {
|
constructor(options: ComponentOptions & { el?: any }) {
|
||||||
super()
|
super()
|
||||||
if (!options) {
|
if (!options) {
|
||||||
return
|
return
|
||||||
@ -21,7 +23,7 @@ class Vue extends Component {
|
|||||||
vnode.children = instance
|
vnode.children = instance
|
||||||
|
|
||||||
function mount(el: any) {
|
function mount(el: any) {
|
||||||
const dom = document.querySelector(el)
|
const dom = typeof el === 'string' ? document.querySelector(el) : el
|
||||||
render(vnode, dom)
|
render(vnode, dom)
|
||||||
return instance.$proxy
|
return instance.$proxy
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user