[英]Testing Watchers in Vue.js with Jasmine
我想測試一個 VueJS 觀察器方法,以檢查它是否被調用。 我的方法看起來像:
watch: {
value: (newValue, oldValue) {
if (newValue.Status === 'Completed') {
...do somethind
}
}
}
該方法在值更改時正在工作,該方法被觸發,但在測試中未被觸發。
我的測試看起來像:
var propsData = {
"value" : {
"Status" : "Something"
}
}
it('should call method', done => {
const Constructor = Vue.extend(App);
const spy = sinon.spy(App, 'value');
const vm = new Constructor({ propsData: propsData }).$mount();
vm.value.Status = 'Completed';
Vue.nextTick(() => {
expect(spy.called).to.be.true;
done()
})
})
我找到了以下示例,但似乎不適用於我的情況:
您正在更改value.Status
,而不是實際的value
參考。 要在值更改時觸發手表,您可以使用deep: true
watch: {
value: {
handler: (newValue, oldValue) {
this.checkValue()
},
deep: true
}
},
methods: {
checkValue() {
}
}
接着
it('should call method', done => {
const Constructor = Vue.extend(App);
const vm = new Constructor({ propsData: propsData }).$mount();
const spy = sinon.spy(vm, 'checkValue');
vm.value.Status = 'New value';
vm.$nextTick(() => {
expect(spy.called).to.be.true;
done()
})
})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.