반응형
문서에 따르면 "wrapper.vm"을 통해 "data" 속성에 액세스하는 것이 올바른 방법입니까?
에 접속하려면data
Vue 테스트 인스턴스의 속성
에 액세스 할 수 있습니다.props
단, 없습니다.data
동등.다음과 같은 방법으로 데이터 속성을 가져올 수 있습니다.wrapper.vm.foo
다만, 테스트 프레임워크의 라인에서 더 떨어질 가능성이 있는 다른 방법이 있다고 생각합니다.
App.vue
<script>
export default {
data() {
return {
foo: 'bar'
}
}
}
</script>
App.spec.js
import { shallowMount } from '@vue/test-utils'
import App from '@/App.vue'
import { expect } from 'chai';
describe("App.vue", () => {
let wrapper;
beforeEach(() => {
// use this to check the state of anything in the view
wrapper = shallowMount(App)
});
it("Module has the expected data attribute", () => {
expect(wrapper.vm.foo).to.equal('bar'); // passes
expect(wrapper.foo).to.equal('bar'); // fails
expect(wrapper.data('foo')).to.equal('bar'); // fails
expect(wrapper.data().foo).to.equal('bar'); // fails
});
it('simple passing test', () => {
expect(1).to.equal(1);
});
});
가능할지 모르지만.vm
올바른 방법입니다.
의 예vue-test-utils
문서:
it('button click should increment the count', () => {
expect(wrapper.vm.count).toBe(0)
const button = wrapper.find('button')
button.trigger('click')
// `wrapper.vm.count` it is!
expect(wrapper.vm.count).toBe(1)
})
DevLime의 답변을 조금 수정해서 wrapper.vm을 사용하는 것을 선호합니다.다음과 같이 wrapper.vm 대신 $data:
it('button click should increment the count', () => {
expect(wrapper.vm.$data.count).toBe(0)
const button = wrapper.find('button')
button.trigger('click')
// `wrapper.vm.$data.count` it is!
expect(wrapper.vm.$data.count).toBe(1)
})
Vue 테스트 유틸리티의 V2에서는 정상적으로 동작합니다.
언급URL : https://stackoverflow.com/questions/54922941/is-accessing-data-properties-via-wrapper-vm-the-correct-way-as-per-the-docs
반응형
'programing' 카테고리의 다른 글
Vuex - 여러 탭에 걸쳐 스토어 업데이트를 유지하는 방법 (0) | 2022.07.09 |
---|---|
Vue.js: 사용자가 버튼을 클릭했을 경우에만 컴포넌트를 로드합니다. (0) | 2022.07.09 |
Vuex에서는 mapGetters가 mapState와 동일한 구문을 받아들이지 않는 이유는 무엇입니까? (0) | 2022.07.09 |
Vue.js Vee 모든 데이터가 유효할 때까지 데이터 전송을 방지하는 방법을 검증합니다. (0) | 2022.07.09 |
개체 키 및 중첩된 어레이의 Vue.js v-for 루프 (0) | 2022.07.09 |