diff --git a/docs/en/README.md b/docs/en/README.md index 8e5665dea..7cf3985b6 100644 --- a/docs/en/README.md +++ b/docs/en/README.md @@ -51,7 +51,6 @@ Vue Test Utils is the official unit testing utility library for Vue.js. * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [isVisible](api/wrapper/isVisible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -66,7 +65,6 @@ Vue Test Utils is the official unit testing utility library for Vue.js. * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [isVisible](api/wrapper-array/isVisible.md) * [components](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/en/SUMMARY.md b/docs/en/SUMMARY.md index f3c276469..a0348be83 100644 --- a/docs/en/SUMMARY.md +++ b/docs/en/SUMMARY.md @@ -47,7 +47,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [isVisible](api/wrapper/isVisible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -62,7 +61,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [isVisible](api/wrapper-array/isVisible.md) * [components](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/en/api/options.md b/docs/en/api/options.md index 595778abe..1b11b6d7c 100644 --- a/docs/en/api/options.md +++ b/docs/en/api/options.md @@ -13,6 +13,7 @@ Options for `mount` and `shallow`. The options object can contain both Vue Test - [`attrs`](#attrs) - [`listeners`](#listeners) - [`provide`](#provide) +- [`sync`](#sync) ### `context` @@ -166,6 +167,13 @@ Set the component instance's `$listeners` object. Pass properties for components to use in injection. See [provide/inject](https://vuejs.org/v2/api/#provide-inject). +### `sync` + +- type: `boolean` +- default: `true` + +Sets all watchers to run synchronously. + ## Other options When the options for `mount` and `shallow` contain the options other than the mounting options, the component options are overwritten with those using [extends](https://vuejs.org/v2/api/#extends). diff --git a/docs/en/api/wrapper-array/update.md b/docs/en/api/wrapper-array/update.md deleted file mode 100644 index b9a1f9080..000000000 --- a/docs/en/api/wrapper-array/update.md +++ /dev/null @@ -1,19 +0,0 @@ -# `update()` - -Force root Vue component of each `Wrapper` in `WrapperArray` to re-render. - -If called on a Vue component wrapper array, it will force each Vue component to re-render. - -- **Example:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/en/api/wrapper/update.md b/docs/en/api/wrapper/update.md deleted file mode 100644 index 9d40fd541..000000000 --- a/docs/en/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# `update()` - -Force root Vue component to re-render. - -If called on a `Wrapper` containing a `vm`, it will force the `Wrapper` `vm` to re-render. - -- **Example:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/docs/fr/README.md b/docs/fr/README.md index 82d017073..619df69b1 100644 --- a/docs/fr/README.md +++ b/docs/fr/README.md @@ -48,7 +48,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -66,7 +65,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [components](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) * [TransitionGroupStub](api/components/TransitionGroupStub.md) diff --git a/docs/fr/SUMMARY.md b/docs/fr/SUMMARY.md index 9ebfa4cef..afba0ee2e 100644 --- a/docs/fr/SUMMARY.md +++ b/docs/fr/SUMMARY.md @@ -43,7 +43,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) diff --git a/docs/fr/api/README.md b/docs/fr/api/README.md index c59df9fc0..6e121b1bc 100644 --- a/docs/fr/api/README.md +++ b/docs/fr/api/README.md @@ -34,7 +34,6 @@ * [setProps (EN)](./wrapper/setProps.md) * [text (EN)](./wrapper/text.md) * [trigger (EN)](./wrapper/trigger.md) - * [update (EN)](./wrapper/update.md) * [WrapperArray (EN)](./wrapper-array/README.md) * [at (EN)](./wrapper-array/at.md) * [contains (EN)](./wrapper-array/contains.md) @@ -52,7 +51,6 @@ * [setMethods (EN)](./wrapper-array/setMethods.md) * [setProps (EN)](./wrapper-array/setProps.md) * [trigger (EN)](./wrapper-array/trigger.md) - * [update (EN)](./wrapper-array/update.md) * [components (EN)](./components/README.md) * [TransitionStub (EN)](./components/TransitionStub.md) * [TransitionGroupStub (EN)](./components/TransitionGroupStub.md) diff --git a/docs/fr/api/wrapper-array/update.md b/docs/fr/api/wrapper-array/update.md deleted file mode 100644 index 84dc67485..000000000 --- a/docs/fr/api/wrapper-array/update.md +++ /dev/null @@ -1,19 +0,0 @@ -# update() - -
⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou participer à la traduction de celle-ci dès maintenant !
Force root Vue component of each `Wrapper` in `WrapperArray` to re-render.
- -If called on a Vue component wrapper array, it will force each Vue component to re-render. - -- **Example:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/fr/api/wrapper/update.md b/docs/fr/api/wrapper/update.md deleted file mode 100644 index f13564696..000000000 --- a/docs/fr/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# update() - -⚠Cette page est actuellement en cours de traduction française. Vous pouvez repasser plus tard ou participer à la traduction de celle-ci dès maintenant !
Force root Vue component to re-render.
- -If called on a `Wrapper` containing a `vm`, it will force the `Wrapper` `vm` to re-render. - -- **Example:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/docs/ja/README.md b/docs/ja/README.md index 1a8cf9904..39be309b7 100644 --- a/docs/ja/README.md +++ b/docs/ja/README.md @@ -49,7 +49,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [visible](api/wrapper/visible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -64,7 +63,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [visible](api/wrapper-array/visible.md) * [コンポーネント](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/ja/SUMMARY.md b/docs/ja/SUMMARY.md index 304b240c5..76bf25ffd 100644 --- a/docs/ja/SUMMARY.md +++ b/docs/ja/SUMMARY.md @@ -47,7 +47,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [isVisible](api/wrapper/isVisible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -62,7 +61,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [isVisible](api/wrapper-array/isVisible.md) * [コンポーネント](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/ja/api/wrapper-array/update.md b/docs/ja/api/wrapper-array/update.md deleted file mode 100644 index 50e4676dd..000000000 --- a/docs/ja/api/wrapper-array/update.md +++ /dev/null @@ -1,19 +0,0 @@ -# update() - -`WrapperArray` の各 `Wrapper` のルート Vue コンポーネントを強制的に再描画します。 - -ラップされた Vue コンポーネント配列において呼び出された場合、各 Vue コンポーネントは強制的に再描画します。 - -- **例:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/ja/api/wrapper/update.md b/docs/ja/api/wrapper/update.md deleted file mode 100644 index af78ff9bd..000000000 --- a/docs/ja/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# update() - -Vue コンポーネントを強制的に再描画します。 - -`vm` を含む `Wrapper` で呼び出された場合、`Wrapper` `vm` を強制的に再描画します。 - -- **例:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/docs/kr/SUMMARY.md b/docs/kr/SUMMARY.md index cb306be56..3a2c5d22c 100644 --- a/docs/kr/SUMMARY.md +++ b/docs/kr/SUMMARY.md @@ -41,7 +41,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [destroy](api/wrapper/destroy.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -58,7 +57,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [destroy](api/wrapper-array/destroy.md) * [components](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/kr/api/README.md b/docs/kr/api/README.md index b7d0ed8bd..85ec1e187 100644 --- a/docs/kr/api/README.md +++ b/docs/kr/api/README.md @@ -26,7 +26,6 @@ * [isEmpty](./wrapper/isEmpty.md) * [isVueInstance](./wrapper/isVueInstance.md) * [name](./wrapper/name.md) - * [update](./wrapper/update.md) * [setData](./wrapper/setData.md) * [setProps](./wrapper/setProps.md) * [text](./wrapper/text.md) @@ -41,7 +40,6 @@ * [is](./wrapper-array/is.md) * [isEmpty](./wrapper-array/isEmpty.md) * [isVueInstance](./wrapper-array/isVueInstance.md) - * [update](./wrapper-array/update.md) * [setData](./wrapper-array/setData.md) * [setProps](./wrapper-array/setProps.md) * [trigger](./wrapper-array/trigger.md) diff --git a/docs/kr/api/wrapper-array/update.md b/docs/kr/api/wrapper-array/update.md deleted file mode 100644 index 31a179052..000000000 --- a/docs/kr/api/wrapper-array/update.md +++ /dev/null @@ -1,20 +0,0 @@ -# update() - -`WrapperArray`의 모든 `Wrapper`의 루트 Vue 컴포넌트를 다시 렌더링합니다. - -Vue 컴포넌트 래퍼 배열에서 호출되면 각 Vue 컴포넌트가 강제로 다시 렌더링됩니다. - - -- **예제:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/kr/api/wrapper/update.md b/docs/kr/api/wrapper/update.md deleted file mode 100644 index 6d10b218c..000000000 --- a/docs/kr/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# update() - -강제로 루트 Vue 컴포넌트를 재 렌더링합니다. - -`vm`을 포함하는 `Wrapper`에서 호출되면, `Wrapper` `vm`을 강제로 다시 렌더링합니다. - -- **예제:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/docs/pt-br/README.md b/docs/pt-br/README.md index 5ac4dbfd3..7ce468d5c 100644 --- a/docs/pt-br/README.md +++ b/docs/pt-br/README.md @@ -48,7 +48,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -66,7 +65,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [Componentes](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) * [TransitionGroupStub](api/components/TransitionGroupStub.md) diff --git a/docs/pt-br/SUMMARY.md b/docs/pt-br/SUMMARY.md index a639d7712..df230a2a1 100644 --- a/docs/pt-br/SUMMARY.md +++ b/docs/pt-br/SUMMARY.md @@ -43,7 +43,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -61,7 +60,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [Componentes](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) * [TransitionGroupStub](api/components/TransitionGroupStub.md) diff --git a/docs/pt-br/api/README.md b/docs/pt-br/api/README.md index b40bb4e1d..f3ded7f16 100644 --- a/docs/pt-br/api/README.md +++ b/docs/pt-br/api/README.md @@ -34,7 +34,6 @@ * [setProps](./wrapper/setProps.md) * [text](./wrapper/text.md) * [trigger](./wrapper/trigger.md) - * [update](./wrapper/update.md) * [WrapperArray](./wrapper-array/README.md) * [at](./wrapper-array/at.md) * [contains](./wrapper-array/contains.md) @@ -52,7 +51,6 @@ * [setMethods](./wrapper-array/setMethods.md) * [setProps](./wrapper-array/setProps.md) * [trigger](./wrapper-array/trigger.md) - * [update](./wrapper-array/update.md) * [components](./components/README.md) * [TransitionStub](./components/TransitionStub.md) * [TransitionGroupStub](./components/TransitionGroupStub.md) diff --git a/docs/pt-br/api/wrapper-array/update.md b/docs/pt-br/api/wrapper-array/update.md deleted file mode 100644 index 763630311..000000000 --- a/docs/pt-br/api/wrapper-array/update.md +++ /dev/null @@ -1,21 +0,0 @@ -# update() - -Força a atualização e redesenho do componente Vue de cada wrapper do Array. - -Se for chamado a partir de um componente Vue, força a atualização de cada componente do Array. - -- **Exemplo:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') - -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'novo valor' -divArray.update() - -expect(divArray.at(0).vm.bar).toBe('novo valor') -``` diff --git a/docs/pt-br/api/wrapper/update.md b/docs/pt-br/api/wrapper/update.md deleted file mode 100644 index a4ac4fe0d..000000000 --- a/docs/pt-br/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# update() - -Força o componente Vue a ser redesenhado. - -Se você chamar esse método em um wrapper que contém `vm`, ele forçará o `vm` do wrapper a se redesenhar. - -- **Exemplo:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'novo valor' -wrapper.update() -expect(wrapper.vm.bar).toBe('novo valor') -``` diff --git a/docs/ru/README.md b/docs/ru/README.md index ced2d7c2a..fce5061f3 100644 --- a/docs/ru/README.md +++ b/docs/ru/README.md @@ -51,7 +51,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -66,7 +65,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [Компоненты](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) * [TransitionGroupStub](api/components/TransitionGroupStub.md) diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index d4b1426da..68ea17f97 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -46,7 +46,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) * [contains](api/wrapper-array/contains.md) @@ -61,7 +60,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [Компоненты](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) * [TransitionGroupStub](api/components/TransitionGroupStub.md) diff --git a/docs/ru/api/README.md b/docs/ru/api/README.md index f304f9777..635879bb2 100644 --- a/docs/ru/api/README.md +++ b/docs/ru/api/README.md @@ -36,7 +36,6 @@ * [setProps](./wrapper/setProps.md) * [text](./wrapper/text.md) * [trigger](./wrapper/trigger.md) - * [update](./wrapper/update.md) * [WrapperArray](./wrapper-array/README.md) * [at](./wrapper-array/at.md) * [contains](./wrapper-array/contains.md) @@ -51,7 +50,6 @@ * [setMethods](./wrapper-array/setMethods.md) * [setProps](./wrapper-array/setProps.md) * [trigger](./wrapper-array/trigger.md) - * [update](./wrapper-array/update.md) * [Компоненты](./components/README.md) * [TransitionStub](./components/TransitionStub.md) * [TransitionGroupStub](./components/TransitionGroupStub.md) diff --git a/docs/ru/api/wrapper-array/update.md b/docs/ru/api/wrapper-array/update.md deleted file mode 100644 index e56baaae4..000000000 --- a/docs/ru/api/wrapper-array/update.md +++ /dev/null @@ -1,19 +0,0 @@ -# update() - -Вызывает принудительный перерендеринг корневого компонента Vue у каждого `Wrapper` в `WrapperArray`. - -Если вызывается на массиве wrapper, содержащем компоненты Vue, то будет вызван принудительный перерендеринг каждого компонента Vue. - -- **Пример:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/ru/api/wrapper/update.md b/docs/ru/api/wrapper/update.md deleted file mode 100644 index 074b731f4..000000000 --- a/docs/ru/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# update() - -Принудительный перерендеринг корневого компонента Vue. - -Если вызывается на `Wrapper` содержащем `vm`, то будет вызван принудительный перерендеринг `Wrapper` `vm`. - -- **Пример:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/docs/zh-cn/README.md b/docs/zh-cn/README.md index 825dc2f28..c57e362a2 100644 --- a/docs/zh-cn/README.md +++ b/docs/zh-cn/README.md @@ -51,7 +51,6 @@ Vue Test Utils 是 Vue.js 官方的单元测试实用工具库。 * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [isVisible](api/wrapper/isVisible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -66,7 +65,6 @@ Vue Test Utils 是 Vue.js 官方的单元测试实用工具库。 * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [isVisible](api/wrapper-array/isVisible.md) * [组件](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/zh-cn/SUMMARY.md b/docs/zh-cn/SUMMARY.md index 49b89620e..a1b1f092f 100644 --- a/docs/zh-cn/SUMMARY.md +++ b/docs/zh-cn/SUMMARY.md @@ -47,7 +47,6 @@ * [setProps](api/wrapper/setProps.md) * [text](api/wrapper/text.md) * [trigger](api/wrapper/trigger.md) - * [update](api/wrapper/update.md) * [isVisible](api/wrapper/isVisible.md) * [WrapperArray](api/wrapper-array/README.md) * [at](api/wrapper-array/at.md) @@ -62,7 +61,6 @@ * [setMethods](api/wrapper-array/setMethods.md) * [setProps](api/wrapper-array/setProps.md) * [trigger](api/wrapper-array/trigger.md) - * [update](api/wrapper-array/update.md) * [isVisible](api/wrapper-array/isVisible.md) * [组件](api/components/README.md) * [TransitionStub](api/components/TransitionStub.md) diff --git a/docs/zh-cn/api/README.md b/docs/zh-cn/api/README.md index 4371fbb6c..dfe544178 100644 --- a/docs/zh-cn/api/README.md +++ b/docs/zh-cn/api/README.md @@ -35,7 +35,6 @@ * [setProps](./wrapper/setProps.md) * [text](./wrapper/text.md) * [trigger](./wrapper/trigger.md) - * [update](./wrapper/update.md) * [isVisible](./wrapper/isVisible.md) * [WrapperArray](./wrapper-array/README.md) * [at](./wrapper-array/at.md) @@ -50,7 +49,6 @@ * [setMethods](./wrapper-array/setMethods.md) * [setProps](./wrapper-array/setProps.md) * [trigger](./wrapper-array/trigger.md) - * [update](./wrapper-array/update.md) * [isVisible](./wrapper-array/isVisible.md) * [组件](./components/README.md) * [TransitionStub](./components/TransitionStub.md) diff --git a/docs/zh-cn/api/wrapper-array/update.md b/docs/zh-cn/api/wrapper-array/update.md deleted file mode 100644 index ea280de35..000000000 --- a/docs/zh-cn/api/wrapper-array/update.md +++ /dev/null @@ -1,19 +0,0 @@ -# `update()` - -强制 `WrapperArray` 的每个 `Wrapper` 都根 Vue 组件重渲染。 - -如果调用在 Vue 组件的包裹器数组上,则会强制每个 Vue 组件都重渲染。 - -- **示例:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -const divArray = wrapper.findAll('div') -expect(divArray.at(0).vm.bar).toBe('bar') -divArray.at(0).vm.bar = 'new value' -divArray.update() -expect(divArray.at(0).vm.bar).toBe('new value') -``` diff --git a/docs/zh-cn/api/wrapper/update.md b/docs/zh-cn/api/wrapper/update.md deleted file mode 100644 index 1bdc5d6ed..000000000 --- a/docs/zh-cn/api/wrapper/update.md +++ /dev/null @@ -1,18 +0,0 @@ -# `update()` - -强制根 Vue 组件重渲染。 - -如果在包含一个 `vm` 的 `Wrapper` 上调用,则会强制 `Wrapper` `vm` 重渲染。 - -- **示例:** - -```js -import { mount } from '@vue/test-utils' -import Foo from './Foo.vue' - -const wrapper = mount(Foo) -expect(wrapper.vm.bar).toBe('bar') -wrapper.vm.bar = 'new value' -wrapper.update() -expect(wrapper.vm.bar).toBe('new value') -``` diff --git a/flow/wrapper.flow.js b/flow/wrapper.flow.js index e07368600..3ceb4f6f8 100644 --- a/flow/wrapper.flow.js +++ b/flow/wrapper.flow.js @@ -34,11 +34,11 @@ declare interface BaseWrapper { // eslint-disable-line no-undef setMethods(methods: Object): void, setProps(data: Object): void, trigger(type: string, options: Object): void, - update(): void, destroy(): void } declare type WrapperOptions = { // eslint-disable-line no-undef attachedToDocument: boolean, + sync: boolean, error?: string } diff --git a/packages/shared/add-slots.js b/packages/create-instance/add-slots.js similarity index 98% rename from packages/shared/add-slots.js rename to packages/create-instance/add-slots.js index 94a45b1dc..d774918d9 100644 --- a/packages/shared/add-slots.js +++ b/packages/create-instance/add-slots.js @@ -1,7 +1,7 @@ // @flow import { compileToFunctions } from 'vue-template-compiler' -import { throwError } from './util' +import { throwError } from 'shared/util' function isValidSlot (slot: any): boolean { return true diff --git a/packages/create-instance/create-instance.js b/packages/create-instance/create-instance.js index 0fb190622..6dc98ee1c 100644 --- a/packages/create-instance/create-instance.js +++ b/packages/create-instance/create-instance.js @@ -1,6 +1,6 @@ // @flow -import { addSlots } from 'shared/add-slots' +import { addSlots } from './add-slots' import addMocks from './add-mocks' import addAttrs from './add-attrs' import addListeners from './add-listeners' diff --git a/packages/test-utils/src/create-wrapper.js b/packages/test-utils/src/create-wrapper.js index 6fe1cda97..23043460b 100644 --- a/packages/test-utils/src/create-wrapper.js +++ b/packages/test-utils/src/create-wrapper.js @@ -6,10 +6,9 @@ import VueWrapper from './vue-wrapper' export default function createWrapper ( node: VNode | Component, - update: Function, options: WrapperOptions ) { return node instanceof Vue ? new VueWrapper(node, options) - : new Wrapper(node, update, options) + : new Wrapper(node, options) } diff --git a/packages/test-utils/src/error-wrapper.js b/packages/test-utils/src/error-wrapper.js index 4217bd2b5..1599747ae 100644 --- a/packages/test-utils/src/error-wrapper.js +++ b/packages/test-utils/src/error-wrapper.js @@ -122,7 +122,7 @@ export default class ErrorWrapper implements BaseWrapper { } update (): void { - throwError(`find did not return ${this.selector}, cannot call update() on empty Wrapper`) + throwError(`update has been removed from vue-test-utils. All updates are now synchronous by default`) } destroy (): void { diff --git a/packages/test-utils/src/mount.js b/packages/test-utils/src/mount.js index 3853c8e6f..957ebec13 100644 --- a/packages/test-utils/src/mount.js +++ b/packages/test-utils/src/mount.js @@ -35,5 +35,10 @@ export default function mount (component: Component, options: Options = {}): Vue throw (componentWithError._error) } - return new VueWrapper(vm, { attachedToDocument: !!options.attachToDocument }) + const wrappperOptions = { + attachedToDocument: !!options.attachToDocument, + sync: !!((options.sync || options.sync === undefined)) + } + + return new VueWrapper(vm, wrappperOptions) } diff --git a/packages/test-utils/src/set-watchers-to-sync.js b/packages/test-utils/src/set-watchers-to-sync.js new file mode 100644 index 000000000..93fd85d7a --- /dev/null +++ b/packages/test-utils/src/set-watchers-to-sync.js @@ -0,0 +1,27 @@ +function setDepsSync (dep) { + dep.subs.forEach(setWatcherSync) +} + +function setWatcherSync (watcher) { + if (watcher.sync === true) { + return + } + watcher.sync = true + watcher.deps.forEach(setDepsSync) +} + +export function setWatchersToSync (vm) { + if (vm._watchers) { + vm._watchers.forEach(setWatcherSync) + } + + if (vm._computedWatchers) { + Object.keys(vm._computedWatchers).forEach((computedWatcher) => { + setWatcherSync(vm._computedWatchers[computedWatcher]) + }) + } + + setWatcherSync(vm._watcher) + + vm.$children.forEach(setWatchersToSync) +} diff --git a/packages/test-utils/src/vue-wrapper.js b/packages/test-utils/src/vue-wrapper.js index dc34a22a1..e85613e57 100644 --- a/packages/test-utils/src/vue-wrapper.js +++ b/packages/test-utils/src/vue-wrapper.js @@ -1,37 +1,11 @@ // @flow import Wrapper from './wrapper' -import { addSlots } from 'shared/add-slots' -import cloneDeep from 'lodash/cloneDeep' - -function update (changedData) { - // the only component made by mount() - if (this.$_originalSlots) { - this.$slots = cloneDeep(this.$_originalSlots) - } - if (this.$_mountingOptionsSlots) { - addSlots(this, this.$_mountingOptionsSlots) - } - if (changedData) { - Object.keys(changedData).forEach((key) => { - // $FlowIgnore : Problem with possibly null this.vm - this._watchers.forEach((watcher) => { - if (watcher.expression === key) { watcher.run() } - }) - }) - } else { - this._watchers.forEach(watcher => { - watcher.run() - }) - } - const vnodes = this._render() - this._update(vnodes) - this.$children.forEach(child => update.call(child)) -} +import { setWatchersToSync } from './set-watchers-to-sync' export default class VueWrapper extends Wrapper implements BaseWrapper { constructor (vm: Component, options: WrapperOptions) { - super(vm._vnode, update.bind(vm), options) + super(vm._vnode, options) // $FlowIgnore : issue with defineProperty - https://github.com/facebook/flow/issues/285 Object.defineProperty(this, 'vnode', ({ @@ -44,6 +18,9 @@ export default class VueWrapper extends Wrapper implements BaseWrapper { set: () => {} })) this.vm = vm + if (options.sync) { + setWatchersToSync(vm) + } this.isVueComponent = true this.isFunctionalComponent = vm.$options._isFunctionalContainer this._emitted = vm.__emitted diff --git a/packages/test-utils/src/wrapper-array.js b/packages/test-utils/src/wrapper-array.js index 6e79bd13e..6e27fd017 100644 --- a/packages/test-utils/src/wrapper-array.js +++ b/packages/test-utils/src/wrapper-array.js @@ -2,7 +2,10 @@ import type Wrapper from './wrapper' import type VueWrapper from './vue-wrapper' -import { throwError } from 'shared/util' +import { + throwError, + warn +} from 'shared/util' export default class WrapperArray implements BaseWrapper { wrappers: Array