javascript - 使用vue官方腳手架進(jìn)行單元測試,如何覆蓋到watch里的變量?
問題描述
組件中的watch如下:
player(isPlay) { if (isPlay) { this.playState = ’play’ } else { this.playState = ’pause’ }}
測試文件Home.spec.js中的相關(guān)用例如下
it(’播放狀態(tài)切換’, () => { const Constructor = Vue.extend(Home) const vm = new Constructor().$mount() vm.playerShow = true Vue.nextTick( () => { expect(vm.playState).to.equal('play') }) vm.playerShow = false Vue.nextTick( () => { expect(vm.playState).to.equal('pause') done() })})
這樣寫了之后查看覆蓋率報告,發(fā)現(xiàn)組件中watch部分代碼沒有被覆蓋(都是紅的)請教下如何寫用例才能夠把watch的代碼覆蓋到
問題解答
回答1:雖然不知道是不是正確的做法,這樣寫了之后,就能覆蓋到watch的代碼了...
it(’播放狀態(tài)切換’, () => { const Constructor = Vue.extend(Home) const vm = new Constructor().$mount() vm._watchers[0].cb(true) Vue.nextTick( () => { expect(vm.playState).to.equal('play') }) vm._watchers[0].cb(false) Vue.nextTick( () => { expect(vm.playState).to.equal('pause') done() })})
