我的 IDE 改用 webstorm 了
因為 phpstorm 還不支援 jest
上次說到有個 bug, 如果是空字串,還是可以爽爽的加入 todo list
這次就來補這個洞。
首先,先寫好測試。
it ('never add empty item', () => {
wrapper.setData({
newItem: '',
items: []
})
const button = wrapper.find('button')
button.trigger('click')
expect(wrapper.vm.items).toBe([]);
})
然後確認測試會爆掉
然後修一下洞,直到測試過
addItemToList() {
if( this.newItem === '' )
return;
this.items.push( this.newItem );
this.newItem = '';
}
之後,看一下測試的 code,處理重複的地方
it ('never add empty item', () => {
wrapper.setData({
newItem: '',
items: []
})
// 這邊
const button = wrapper.find('button')
button.trigger('click')
expect(wrapper.vm.items).toEqual([]);
})
it ('should add item to list on click', () => {
// 和這邊重複了
wrapper.vm.newItem = 'mos'
const button = wrapper.find('button')
button.trigger('click')
expect(wrapper.vm.items).toContain('mos')
})
換成這種
const addItem = (item) => {
wrapper.vm.newItem = item
const button = wrapper.find('button')
button.trigger('click')
}
it ('never add empty item', () => {
wrapper.setData({
newItem: '',
items: []
})
addItem('');
expect(wrapper.vm.items).toEqual([]);
})
it ('should add item to list on click', () => {
addItem("mos");
expect(wrapper.vm.items).toContain('mos')
})
打完收工。