diff --git a/docs/api/README.md b/docs/api/README.md index d081f89fb..7a0359c76 100644 --- a/docs/api/README.md +++ b/docs/api/README.md @@ -6,4 +6,5 @@ !!!include(docs/api/renderToString.md)!!! !!!include(docs/api/selectors.md)!!! !!!include(docs/api/createLocalVue.md)!!! +!!!include(docs/api/createWrapper.md)!!! !!!include(docs/api/config.md)!!! \ No newline at end of file diff --git a/docs/api/createWrapper.md b/docs/api/createWrapper.md new file mode 100644 index 000000000..b56bd4b94 --- /dev/null +++ b/docs/api/createWrapper.md @@ -0,0 +1,19 @@ +## createWrapper() + +- **Returns:** + - `{Wrapper}` + +- **Usage:** + +`createWrapper` creates a `Wrapper` for a mounted Vue instance, or an HTML element. + +```js +import { createWrapper } from '@vue/test-utils' +import Foo from './Foo.vue' + +const Constructor = Vue.extend(Foo) +const vm = new Constructor().$mount() +const wrapper = createWrapper(vm) +expect(wrapper.vm.foo).toBe(true) +``` + diff --git a/flow/wrapper.flow.js b/flow/wrapper.flow.js index 5df1604c6..9799e0f3d 100644 --- a/flow/wrapper.flow.js +++ b/flow/wrapper.flow.js @@ -46,6 +46,6 @@ declare interface BaseWrapper { declare type WrapperOptions = { // eslint-disable-line no-undef - attachedToDocument: boolean, + attachedToDocument?: boolean, sync?: boolean }; diff --git a/packages/test-utils/src/create-wrapper.js b/packages/test-utils/src/create-wrapper.js index dbd69d993..9a420fedc 100644 --- a/packages/test-utils/src/create-wrapper.js +++ b/packages/test-utils/src/create-wrapper.js @@ -6,7 +6,7 @@ import VueWrapper from './vue-wrapper' export default function createWrapper ( node: VNode | Component, - options: WrapperOptions + options: WrapperOptions = {} ): VueWrapper | Wrapper { const componentInstance = node.componentInstance || node.child if (componentInstance) { diff --git a/packages/test-utils/src/index.js b/packages/test-utils/src/index.js index 64ee7a6f4..fabf0cbd7 100644 --- a/packages/test-utils/src/index.js +++ b/packages/test-utils/src/index.js @@ -4,6 +4,7 @@ import createLocalVue from './create-local-vue' import TransitionStub from './components/TransitionStub' import TransitionGroupStub from './components/TransitionGroupStub' import RouterLinkStub from './components/RouterLinkStub' +import createWrapper from './create-wrapper' import Wrapper from './wrapper' import WrapperArray from './wrapper-array' import config from './config' @@ -19,6 +20,7 @@ function shallow (component, options) { export default { createLocalVue, + createWrapper, config, mount, shallow, diff --git a/test/specs/create-wrapper.spec.js b/test/specs/create-wrapper.spec.js new file mode 100644 index 000000000..c32f7e9ba --- /dev/null +++ b/test/specs/create-wrapper.spec.js @@ -0,0 +1,15 @@ +import Vue from 'vue' +import { createWrapper, Wrapper, WrapperArray } from '~vue/test-utils' +import Component from '~resources/components/component.vue' +import { describeRunIf } from 'conditional-specs' + +describeRunIf(process.env.TEST_ENV !== 'node', 'mount', () => { + it.only('exports createWrapper', () => { + const Constructor = Vue.extend(Component) + const vm = new Constructor().$mount() + const wrapper = createWrapper(vm) + expect(wrapper.is(Component)).to.equal(true) + expect(wrapper).instanceof(Wrapper) + expect(wrapper.findAll('div')).instanceof(WrapperArray) + }) +})