반응형
VueX 스토어가 여러 유닛 테스트에 걸쳐 상태를 유지하는 이유는 무엇입니까?
페이지화 모듈의 유닛 테스트를 작성 중인데, 간단한 VueX 스토어 모듈을 가지고 있습니다.
테스트에는 Vue.js 2.5와 Mocha/Chai/Sinon을 사용하고 있습니다.셋업은 Vue CLI 3을 사용합니다.
문제는 이 시스템이currentPage
하나의 유닛 테스트로 스토어에서 증가하며, 이 상태는 신규 스토어를 생성하려고 해도 다음 테스트까지 지속됩니다.
새로운 페이지 번호 모듈을 반환하는 함수를 사용하여 반환을 시도했습니다.Object.assign()
새로운 카피이지만, 이것은 동작하지 않았습니다.아래 스펙과 같이 코드에 남겨두었습니다.
저장/판매.js
const state = {
currentPage: 0
}
export const getters = {
currentPage: state => {
return state.currentPage
}
}
export const actions = {
nextPage ({ commit, state }) {
commit('setCurrentPage', state.currentPage + 1)
}
}
export const mutations = {
setCurrentPage (state, page) {
state.currentPage = page
}
}
export default {
namespaced: true,
state,
getters,
actions,
mutations
}
Pagination.spec.js
function getPaginationStore () {
return Object.assign({}, pagination)
}
describe('Paginate.vue', () => {
let localVue
let wrapper
let store
beforeEach(() => {
localVue = createLocalVue()
localVue.use(Vuex)
store = new Vuex.Store({
modules: {
pagination: getPaginationStore()
}
})
wrapper = shallowMount(Pagination, {
localVue,
propsData: {
items: [],
size: 24
},
store
})
})
afterEach(() => {
store = null
})
it('state should be 0', () => {
expect(wrapper.vm.pageNumber).to.equal(0)
wrapper.vm.$store.dispatch('pagination/nextPage')
expect(wrapper.vm.pageNumber).to.equal(1)
})
it('state should be 0 again but is 1', () => {
// THIS TEST FAILS. IT IS ACTUALLY 1
expect(wrapper.vm.pageNumber).to.equal(0)
})
})
해결책은 단순한 오래된 javascript 객체가 아닌 모듈의 상태에 대한 함수를 사용하는 것이었습니다.새로운 스토어 스테이트 코드는 다음과 같습니다.
export const state = () => {
return {
currentPage: 0
}
}
답변은 Vue 불일치 채널의 @SumNeuron에 의해 제공되었습니다.
언급URL : https://stackoverflow.com/questions/54556952/why-does-vuex-store-retain-state-across-multiple-unit-tests
반응형
'source' 카테고리의 다른 글
문자열에서 각 단어의 첫 글자를 가져옵니다. (0) | 2022.09.23 |
---|---|
PDO가 bool(false) 파라미터를 string("?)으로 변환하는 이유는 무엇입니까? (0) | 2022.09.23 |
팬더를 사용하여 문자열 열의 각 값에 문자열 접두사를 추가하다 (0) | 2022.09.23 |
Panda DataFrame의 더 많은 열을 보려면 출력 디스플레이를 확대하려면 어떻게 해야 합니까? (0) | 2022.09.23 |
Java의 이중 10진 형식 (0) | 2022.09.22 |