-
Notifications
You must be signed in to change notification settings - Fork 38
/
AddTodoView.spec.js
77 lines (70 loc) · 2.25 KB
/
AddTodoView.spec.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import React from 'react'
import AddTodoView from '../../src/component/AddTodoView'
import { shallow } from 'enzyme'
const setup = () => {
// 模拟 props
const props = {
// Jest 提供的mock 函数
onAddClick: jest.fn( (e) => {
})
}
// 通过 enzyme 提供的 shallow(浅渲染) 创建组件
const wrapper = shallow(<AddTodoView {...props} />)
return {
props,
wrapper
}
}
describe('AddTodoView', () => {
const { wrapper, props } = setup();
// case1
// 通过查找是否存在 Input,测试组件正常渲染
it('AddTodoView Component should render', () => {
//.find(selector) 是 Enzyme shallow Rendering 提供的语法, 用于查找节点
// 详细用法见 Enzyme 文档 http://airbnb.io/enzyme/docs/api/shallow.html
expect(wrapper.find('input').exists());
})
// case2
// 输入内容并敲下回车键,测试组件调用props的方法
/* it('When the Enter key was pressed, onAddClick() shoule be called', () => {
// mock input 输入和 Enter事件
const mockEvent = {
keyCode: 13, // enter 事件
target: {
value: 'Test'
}
}
// 通过 Enzyme 提供的 simulate api 模拟 DOM 事件
wrapper.find('input').simulate('keyup',mockEvent)
// 判断 props.onAddClick 是否被调用
expect(props.onAddClick).toBeCalled()
})*/
// case3
// 没有输入内容并敲下回车键,测试组件没有调用props的方法
it('When the Enter key was pressed without text, onAddClick() shoule not be called', () => {
// mock input 输入和 Enter事件
const mockEvent = {
keyCode: 13, // enter 事件
target: {
value: undefined
}
}
// 通过 Enzyme 提供的 simulate api 模拟 DOM 事件
wrapper.find('input').simulate('keyup',mockEvent)
// 判断 props.onAddClick 是否被调用
expect(props.onAddClick).not.toBeCalled()
})
// case4
// 创建完成后,input框被晴空
it('input value should be empty when todo is created', () => {
const mockEvent = {
keyCode: 13, // enter 事件
target: {
value: 'Test'
}
}
// 通过 Enzyme 提供的 simulate api 模拟 DOM 事件
wrapper.find('input').simulate('keyup',mockEvent)
expect(mockEvent.target.value === '')
})
})