반응형
HTML 본문에 DOM 요소를 추가하는 Vue 구성 요소를 테스트하는 방법은 무엇입니까?
Vuetify의 Menu 컴포넌트를 사용하는 Vue 2.0 컴포넌트가 있습니다.테스트 중에 컴포넌트를 마운트하기 위해 공식 vue-test-utils를 사용합니다.
제가 직면한 문제는 메뉴 컴포넌트가 HTML 본문에 "메뉴"를 추가하는 것입니다(컴포넌트의 범위 밖).그렇기 때문에 접속할 수 없습니다.wrapper.find('.menu')
내 컴포넌트의 다른 요소에 대해서도 마찬가지입니다.
vue-test-utils를 사용하여 본체에 부착된 요소에 액세스하는 좋은 방법이 있습니까?
갱신하다
이 시점에서 내 컴포넌트는 이 Vuetify 코드펜의 예와 거의 똑같이 보입니다.
이렇게 컴포넌트를 장착합니다.
import Vuex from 'vuex'
import Vuetify from 'vuetify'
import AuthenticatedUser from './AuthenticatedUser'
import { mount, createLocalVue } from 'vue-test-utils'
const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(Vuetify)
describe('AuthenticatedUser', () => {
let getters
let store
beforeEach(() => {
getters = {
getUserDetails: () => { name: 'John Doe' }
}
store = new Vuex.Store({ getters })
})
it('should open menu when button is clicked', () => {
const wrapper = mount(AuthenticatedUser, { store, localVue })
// In here 'wrapper' won't have access to the dropdown menu,
// since it has been added directly to the HTML body
})
})
컴포넌트 정의에서,ref
메뉴 내용에 기인합니다.이 경우,<v-card>
컴포넌트:
<v-menu>
<v-btn slot="activator"></v-btn>
<v-card ref="menu"></v-card>
</v-menu>
그러면 거기에 접속할 수 있을 거예요.<v-card>
경유 컴포넌트wrapper.vm.$refs.menu
당신의 테스트 케이스에서.
v-menu 구성 요소의 연결 속성을 사용하여 테스트된 구성 요소 내부에 메뉴 항목을 추가하는 것은 어떻습니까?
언급URL : https://stackoverflow.com/questions/48189466/how-to-unit-test-vue-component-that-append-dom-element-to-html-body
반응형
'programing' 카테고리의 다른 글
vue 템플릿에서 const를 사용하려면 어떻게 해야 합니까? (0) | 2022.08.25 |
---|---|
새로운 Vue3 프로젝트에서 Vue2 이전 컴포넌트(.vue 파일)를 사용하려면 어떻게 해야 합니까? (0) | 2022.08.25 |
농담으로 Vue 장치 테스트 vuex 저장소 작업 (0) | 2022.08.25 |
계산된 속성에 대해 형식 설명/Vuej가 컴파일되지 않음 (0) | 2022.08.25 |
Vuejs2의 선택 태그에서 계산된 v-model (0) | 2022.08.25 |