I'm writing unit tests for vuelidate validation in my component. I figured out that the $touch() method is called asynchronously, so I need to use $nextTick() for the expect(). The problem appears when I need two nextTick()s for two expect()s.
describe('Validations', () => { let data let myComponent beforeEach(() => { data = () => { propertyABC = 'not allowed value' } myComponent = localVue.component('dummy', {template: '<div></div>', validations, data}) it('Properly validates propertyABC', (done) => { Vue.config.errorHandler = done let wrapper = mount(myComponent, {localVue}) wrapper.vm.$v.$touch() wrapper.vm.$nextTick(() => { expect(wrapper.vm.$v.propertyABC.$error).to.be.true # fails, because propertyABC === 'allowed value', adn thus $error is false done() } wrapper.vm.propertyABC = 'allowed value' wrapper.vm.$v.propertyABC.$touch() wrapper.vm.$nextTick(() => { expect(wrapper.vm.$v.proprtyABC.$error).to.be.false done() } }) }) How can I run this test without splitting it into two separate tests? I think nesting the $nextTick() might work, but it would be not flexible for higher amount of tests.
Promise.all?