diff --git a/packages/create-instance/create-component-stubs.js b/packages/create-instance/create-component-stubs.js
index 8c0749f26..8ffd002a7 100644
--- a/packages/create-instance/create-component-stubs.js
+++ b/packages/create-instance/create-component-stubs.js
@@ -61,28 +61,6 @@ function getCoreProperties(componentOptions: Component): Object {
}
}
-function createClassString(staticClass, dynamicClass) {
- // :class="someComputedObject" can return a string, object or undefined
- // if it is a string, we don't need to do anything special.
- let evaluatedDynamicClass = dynamicClass
-
- // if it is an object, eg { 'foo': true }, we need to evaluate it.
- // see https://github.com/vuejs/vue-test-utils/issues/1474 for more context.
- if (typeof dynamicClass === 'object') {
- evaluatedDynamicClass = Object.keys(dynamicClass).reduce((acc, key) => {
- if (dynamicClass[key]) {
- return acc + ' ' + key
- }
- return acc
- }, '')
- }
-
- if (staticClass && evaluatedDynamicClass) {
- return staticClass + ' ' + evaluatedDynamicClass
- }
- return staticClass || evaluatedDynamicClass
-}
-
function resolveOptions(component, _Vue) {
if (isDynamicComponent(component)) {
return {}
@@ -134,24 +112,19 @@ export function createStubFromComponent(
render(h, context) {
return h(
tagName,
- {
- ref: componentOptions.functional ? context.data.ref : undefined,
- domProps: componentOptions.functional
- ? context.data.domProps
- : undefined,
- attrs: componentOptions.functional
- ? {
+ componentOptions.functional
+ ? {
+ ...context.data,
+ attrs: {
...context.props,
- ...context.data.attrs,
- class: createClassString(
- context.data.staticClass,
- context.data.class
- )
+ ...context.data.attrs
}
- : {
+ }
+ : {
+ attrs: {
...this.$props
}
- },
+ },
context
? context.children
: this.$options._renderChildren ||
diff --git a/test/resources/components/component-with-functional-child.vue b/test/resources/components/component-with-functional-child.vue
index 16d638a02..14bc2ab68 100644
--- a/test/resources/components/component-with-functional-child.vue
+++ b/test/resources/components/component-with-functional-child.vue
@@ -1,7 +1,8 @@