【发布时间】:2018-07-22 22:15:46
【问题描述】:
我正在为我的组件中的vuelidate 验证编写单元测试。我发现$touch()方法是异步调用的,所以我需要将$nextTick()用于expect()。当我需要两个nextTick()s 用于两个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()
}
})
})
如何运行此测试而不将其拆分为两个单独的测试?我认为嵌套$nextTick() 可能会起作用,但对于更多的测试它会不够灵活。
【问题讨论】:
标签: javascript vue.js vue-test-utils vuelidate