vue / test-utils: добавить localVue и stubs.transition для mount (), но выдать ошибку типа «Не удается прочитать свойство» _transitionClasses «из неопределенного» - PullRequest
0 голосов
/ 19 февраля 2019
"element-ui": "2.4.6"
"@vue/test-utils": "^1.0.0-beta.29"

Я хочу связать Element-ui с mount, поэтому в начале я запишу как:

import { mount, createLocalVue, shallowMount, config } from '@vue/test-utils'
import Element from 'element-ui'
const localVue = createLocalVue()
localVue.use(Element)

И мой основной код:

const wrapper = mount(List, {
    localVue
})
setTimeout(() => {
    expect(wrapper.contains(OperationColumn)).toBe(true)
    done()
})

И послеработает я получил:

TypeError: Cannot read property '$el' of undefined
        at VueComponent.mounted (F:\workspace\HaiShangEdit\node_modules\element-ui\lib\select.js:1280:54)
        at invokeWithErrorHandling (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:1843:57)
        at callHook (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:4157:7)
        at Object.insert (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:3108:7)
        at invokeInsertHook (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:6266:28)
        at VueComponent.patch [as __patch__] (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:6483:5)
        at VueComponent.Vue._update (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:3886:19)
        at VueComponent.updateComponent (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:4007:10)
        at Watcher.get (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:4405:25)
        at new Watcher (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:4394:12)
        at mountComponent (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:4014:3)
        at VueComponent.Object.<anonymous>.Vue.$mount (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:8327:10)
        at mount (F:\workspace\HaiShangEdit\node_modules\@vue\test-utils\dist\vue-test-utils.js:8649:21)
        at Object.<anonymous> (F:\workspace\HaiShangEdit\test\pictureLibrary\list.spec.js:45:22)
        at Object.asyncJestTest (F:\workspace\HaiShangEdit\node_modules\jest-jasmine2\build\jasmine_async.js:108:37)
        at resolve (F:\workspace\HaiShangEdit\node_modules\jest-jasmine2\build\queue_runner.js:56:12)
        at new Promise (<anonymous>)
        at mapper (F:\workspace\HaiShangEdit\node_modules\jest-jasmine2\build\queue_runner.js:43:19)
        at promise.then (F:\workspace\HaiShangEdit\node_modules\jest-jasmine2\build\queue_runner.js:87:41)
        at process._tickCallback (internal/process/next_tick.js:68:7)

  console.error node_modules/@vue/test-utils/dist/vue-test-utils.js:1421
    [vue-test-utils]: update has been removed from vue-test-utils. All updates are now synchronous by default

И после Google я обнаружил, что это ошибка из Element-ui, поэтому я изменил свой код детали как:

const wrapper2 = mount(List, {
      localVue,
      sync: true,
      stubs: {
        transition: false
      }
})

Но все равно не получилось с большим количеством ошибок:

[Vue warn]: Error in callback for watcher "options": "TypeError: Cannot read property 'querySelectorAll' of undefined"

TypeError: Cannot read property 'querySelectorAll' of undefined
        at VueComponent.options (F:\workspace\HaiShangEdit\node_modules\element-ui\lib\element-ui.common.js:8577:29)

TypeError: Cannot set property 'documentHandler' of undefined
        at update (F:\workspace\HaiShangEdit\node_modules\element-ui\lib\utils\clickoutside.js:64:29)

[Vue warn]: Error in created hook: "TypeError: Cannot read property '_transitionClasses' of undefined"

TypeError: Cannot read property '_transitionClasses' of undefined
        at Array.updateClass (F:\workspace\HaiShangEdit\node_modules\vue\dist\vue.runtime.common.dev.js:6733:28)

Я очень запутался в vue / test-utils, потому что я новый ученик, поэтому был бы признателен, если кто-нибудь может помочь мне решить эту проблему. Кстати, я должен учитьсяjest до того, как я начну писать vue unit test с vue/test-utils?

...