import chai, { expect } from "chai";
import Vue from 'vue'
import sinon from 'sinon'
import sinonChai from 'sinon-chai'
chai.use(sinonChai)
import { shallowMount, mount } from "@vue/test-utils"
import Slides from "@/slides/slides.vue"
import SlidesItem from "@/slides/slides-item.vue"
describe("Slides.vue", () => {
it('存在.', () => {
expect(Slides).to.exist
})
it('默认展示第一个', (done) => {
Vue.component('GSlidesItem', SlidesItem)
const wrapper = mount(Slides, {
slots: {
default:`
<g-slides-item name="0">
<div class="box1">0</div>
</g-slides-item>
<g-slides-item name="1">
<div class="box2">1</div>
</g-slides-item>
<g-slides-item name="2">
<div class="box3">2</div>
</g-slides-item>`
},
propsData: {
autoPlay: false
}
})
setTimeout(() => {
expect(wrapper.find('.box1').exists()).to.be.true
done()
})
})
it('value是几就展示第几个', (done) => {
Vue.component('GSlidesItem', SlidesItem)
const wrapper = mount(Slides, {
slots: {
default:`
<g-slides-item name="0">
<div class="box1">0</div>
</g-slides-item>
<g-slides-item name="1">
<div class="box2">1</div>
</g-slides-item>
<g-slides-item name="2">
<div class="box3">2</div>
</g-slides-item>`
},
propsData: {
autoPlay: false,
value:'1'
}
})
setTimeout(() => {
expect(wrapper.find('.box2').exists()).to.be.true
done()
})
})
it('点击第二个展示第二个', (done) => {
Vue.component('GSlidesItem', SlidesItem)
const wrapper = mount(Slides, {
slots: {
default:`
<g-slides-item name="0">
<div class="box1">0</div>
</g-slides-item>
<g-slides-item name="1">
<div class="box2">1</div>
</g-slides-item>
<g-slides-item name="2">
<div class="box3">2</div>
</g-slides-item>`
},
propsData: {
autoPlay: false,
value:'0'
},
listeners: {
'input': (x) => {
expect(x).to.be.eq('1')
}
}
})
setTimeout(() => {
wrapper.find('[data-index="2"]').trigger('click')
done()
})
})
it('自动播放', (done) => {
const callback = sinon.fake()
Vue.component('GSlidesItem', SlidesItem)
const wrapper = mount(Slides, {
slots: {
default:`
<g-slides-item name="0">
<div class="box1">0</div>
</g-slides-item>
<g-slides-item name="1">
<div class="box2">1</div>
</g-slides-item>
<g-slides-item name="2">
<div class="box3">2</div>
</g-slides-item>`
},
propsData: {
autoPlay: true,
value:'0',
autoPlayTime:500
},
listeners: {
'input':callback
}
})
setTimeout(() => {
expect(callback).to.have.been.called
//callback接收的参数'1'
expect(callback).to.have.been.calledWith('1')
done()
},600)
})
})
|