# 测试
- 建议使用 Jest (opens new window) 进行测试。
- 尽量去写很多小而美的纯函数,减少突变的发生
- 100% 测试覆盖率是我们努力的目标,即便实际上很少达到。
- 每当你修了一个bug, 都要写一个回归测试。 一个bug修复了,没有回归测试,很可能以后会再次出问题。
# 单元测试应该怎么写呢?
- 根据正确性写测试,即正确的输入应该有正常的结果。
- 根据错误性写测试,即错误的输入应该是错误的结果。
下面看一个简单的示例,现在我们要对一个取绝对值的函数 abs()
写测试,它要求输入 1,2
,结果应该与输入相同;输入 -1,-2
,结果应该与输入相反。如果输入非数字,例如 "abc"
,应该抛出一个类型错误。
// main.js
function abs(a) {
if (typeof a != 'number') {
throw new TypeError('参数必须为数值型')
}
if (a < 0) return -a
return a
}
// test.spec.js
test('abs', () => {
expect(abs(1)).toBe(1)
expect(abs(0)).toBe(0)
expect(abs(-1)).toBe(1)
expect(() => abs('abc')).toThrow(TypeError) // 类型错误
})
← 事件 非必要情况下不能使用any →