diff --git a/packages/message/src/main.vue b/packages/message/src/main.vue index a888a03d719..abbda4de138 100644 --- a/packages/message/src/main.vue +++ b/packages/message/src/main.vue @@ -47,7 +47,7 @@ handleClose() { this.closed = true; if (typeof this.onClose === 'function') { - this.onClose(); + this.onClose(this); } }, diff --git a/test/unit/specs/message.spec.js b/test/unit/specs/message.spec.js new file mode 100644 index 00000000000..782eb15ac02 --- /dev/null +++ b/test/unit/specs/message.spec.js @@ -0,0 +1,78 @@ +import { createVue, triggerEvent } from '../util'; + +describe('Message', () => { + it('automatically close', done => { + const vm = createVue({ + template: ` +
+ ` + }, true); + vm.$message({ + message: '灰风', + duration: 500 + }); + expect(document.querySelector('.el-message')).to.exist; + setTimeout(() => { + expect(document.querySelector('.el-message')).to.not.exist; + done(); + }, 1000); + }); + + it('manually close', done => { + const vm = createVue({ + template: ` +
+ ` + }, true); + vm.$message({ + message: '夏天', + showClose: true + }); + setTimeout(() => { + document.querySelector('.el-message__closeBtn').click(); + setTimeout(() => { + expect(document.querySelector('.el-message')).to.not.exist; + done(); + }, 500); + }, 500); + }); + + it('create', () => { + const vm = createVue({ + template: ` +
+ ` + }, true); + vm.$message('娜梅莉亚'); + expect(document.querySelector('.el-message')).to.exist; + }); + + it('invoke with type', () => { + const vm = createVue({ + template: ` +
+ ` + }, true); + vm.$message.success('毛毛狗'); + expect(document.querySelector('.el-message')).to.exist; + }); + + it('reset timer', done => { + const vm = createVue({ + template: ` +
+ ` + }, true); + vm.$message({ + message: '白灵', + duration: 1000 + }); + setTimeout(() => { + triggerEvent(document.querySelector('.el-message'), 'mouseenter'); + setTimeout(() => { + expect(document.querySelector('.el-message')).to.exist; + done(); + }, 700); + }, 500); + }); +});