Тестирование наблюдателей в Vue.js с Жасмин - PullRequest
0 голосов
/ 29 мая 2018

Я хочу проверить метод наблюдателя 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()
   })
})

Я нашел следующие примеры, но, похоже, не работает в моем случае:

  1. Утверждение асинхронных обновлений
  2. Форум

1 Ответ

0 голосов
/ 29 мая 2018

Вы меняете 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()
   })
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...