--- /dev/null
+import { Component, createInstance } from '@vue/renderer-test'
+
+describe('class inheritance', () => {
+ it('should merge data', () => {
+ class Base extends Component {
+ foo = 1
+ data() {
+ return {
+ bar: 2
+ }
+ }
+ }
+
+ class Child extends Base {
+ foo: number
+ bar: number
+ baz: number
+ qux: number = 4
+
+ data(): any {
+ return {
+ baz: 3
+ }
+ }
+ }
+
+ const child = createInstance(Child)
+
+ expect(child.foo).toBe(1)
+ expect(child.bar).toBe(2)
+ expect(child.baz).toBe(3)
+ expect(child.qux).toBe(4)
+ })
+
+ it('should merge props', () => {})
+
+ it('should merge lifecycle hooks', () => {})
+
+ it('should merge watchers', () => {})
+
+ it('should inherit methods', () => {})
+
+ it('should inherit computed properties', () => {})
+})
--- /dev/null
+describe('mixins', () => {
+ it('should work with classes', () => {})
+
+ it('should work with objects', () => {})
+
+ it('should work with a mix of objects and classes', () => {})
+})
-import { createRenderer, VNode, Component } from '@vue/core'
+import {
+ h,
+ createRenderer,
+ VNode,
+ Component,
+ createComponentInstance
+} from '@vue/core'
import { nodeOps, TestElement } from './nodeOps'
import { patchData } from './patchData'
) => Component | null
export const render = _render as publicRender
+export function createInstance<T extends Component>(
+ Class: new () => T,
+ props?: any
+): T {
+ return createComponentInstance(h(Class, props)).$proxy as any
+}
+
+export function renderIntsance<T extends Component>(
+ Class: new () => T,
+ props?: any
+): T {
+ return render(h(Class, props), nodeOps.createElement('div')) as any
+}
+
export { serialize } from './serialize'
export * from './nodeOps'
export * from '@vue/core'