diff --git a/packages/shared/stub-components.js b/packages/shared/stub-components.js index 2052b14dc..c56412de6 100644 --- a/packages/shared/stub-components.js +++ b/packages/shared/stub-components.js @@ -10,19 +10,20 @@ import { } from './util' import { componentNeedsCompiling, - templateContainsComponent + templateContainsComponent, + isVueComponent } from './validators' import { compileTemplate } from './compile-template' -function isVueComponent (comp): boolean { - return comp && (comp.render || comp.template || comp.options) +function isVueComponentStub (comp): boolean { + return comp && comp.template || isVueComponent(comp) } function isValidStub (stub: any): boolean { return ( (!!stub && typeof stub === 'string') || stub === true || - isVueComponent(stub) + isVueComponentStub(stub) ) } diff --git a/test/specs/mounting-options/stubs.spec.js b/test/specs/mounting-options/stubs.spec.js index 7cc7ce908..b23a9ab59 100644 --- a/test/specs/mounting-options/stubs.spec.js +++ b/test/specs/mounting-options/stubs.spec.js @@ -33,13 +33,15 @@ describeWithMountingMethods('options.stub', mountingMethod => { it('accepts valid component stubs', () => { const ComponentWithRender = { render: h => h('div') } const ComponentWithoutRender = { template: '
' } - const ExtendedComponent = Vue.extend({ template: '
' }) + const ExtendedComponent = { extends: ComponentWithRender } + const SubclassedComponent = Vue.extend({ template: '
' }) mountingMethod(ComponentWithChild, { stubs: { ChildComponent: ComponentAsAClass, ChildComponent2: ComponentWithRender, ChildComponent3: ComponentWithoutRender, - ChildComponent4: ExtendedComponent + ChildComponent4: ExtendedComponent, + ChildComponent5: SubclassedComponent } }) })