UNPKG

yukaka

Version:
87 lines (80 loc) 2.9 kB
const expect = chai.expect; import Vue from 'vue' import Input from '../src/input' Vue.config.productionTip = false; Vue.config.devtools = false; describe('Input', () => { it('存在.', () => { expect(Input).to.exist }); describe('props', () => { const Constructor = Vue.extend(Input); let vm; afterEach(() => { vm.$destroy() }); it('接收 value', () => { vm = new Constructor({ propsData: { value: '1234' } }).$mount(); const inputElement = vm.$el.querySelector('input'); expect(inputElement.value).to.equal('1234') }); it('接收 disabled', () => { vm = new Constructor({ propsData: { disabled: true } }).$mount(); const inputElement = vm.$el.querySelector('input'); expect(inputElement.disabled).to.equal(true) }); it('接收 readonly', () => { vm = new Constructor({ propsData: { readonly: true } }).$mount(); const inputElement = vm.$el.querySelector('input'); expect(inputElement.readOnly).to.equal(true) }); it('接收 error', () => { vm = new Constructor({ propsData: { error: '你错了' } }).$mount(); const useElement = vm.$el.querySelector('use'); expect(useElement.getAttribute('xlink:href')).to.equal('#i-error'); const errorMessage = vm.$el.querySelector('.errorMessage'); expect(errorMessage.innerText).to.equal('你错了') }) }); describe('事件', () => { const Constructor = Vue.extend(Input); let vm; afterEach(() => { vm.$destroy() }); it('支持 change/input/focus/blur 事件', () => { ['change', 'input', 'focus', 'blur'] .forEach((eventName) => { vm = new Constructor({}).$mount(); const callback = sinon.fake(); vm.$on(eventName, callback); //触发input的change 事件 let event = new Event(eventName); Object.defineProperty( event, 'target', { value: {value: 'hi'}, enumerable: true } ); let inputElement = vm.$el.querySelector('input'); inputElement.dispatchEvent(event); expect(callback).to.have.been.calledWith('hi') }) }) }) });