commit
064ef3e50e
|
@ -1,5 +1,5 @@
|
|||
### RDB + AOF 的事务解决方案
|
||||
|
||||
|
||||
|
||||
### RDB + AOF 的事务解决方案
|
||||
|
||||
|
||||
|
||||
![事务RDB方案](https://gitee.com/timedb/img/raw/master/images/事务RDB方案.svg)
|
|
@ -0,0 +1,54 @@
|
|||
### 单元测试文档
|
||||
|
||||
#### 样例
|
||||
```go
|
||||
package dao
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
_ "gitee.com/timedb/wheatCache/conf"
|
||||
"gitee.com/timedb/wheatCache/pkg/lru"
|
||||
"gitee.com/timedb/wheatCache/pkg/proto"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
// 规范1. 每个 package 应该都至少有一个单测
|
||||
|
||||
// 规范2. 包里有公用的 mock 数据应该分离出来。
|
||||
func mockData(t *testing.T, d *Dao) {
|
||||
|
||||
values := []string{"1", "1.3", "abcdefg"}
|
||||
|
||||
for _, val := range values {
|
||||
key := &proto.BaseKey{
|
||||
Key: val,
|
||||
}
|
||||
_, err := d.Set(key, val)
|
||||
|
||||
// 规范3. 使用 require 包来完成单测
|
||||
require.NoError(t, err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// 规范4. 单元测试应该尽可能覆盖全部情况,不要使用依赖注入。
|
||||
func TestDao_Reduce(t *testing.T) {
|
||||
lruCache := lru.NewLRUCache()
|
||||
dao := NewDao(lruCache)
|
||||
mockData(t, dao)
|
||||
|
||||
resp, err := dao.Reduce(&proto.BaseKey{Key: "1"}, 2)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, resp, "-1")
|
||||
|
||||
resp, err = dao.Reduce(&proto.BaseKey{Key: "1.3"}, 2)
|
||||
require.NoError(t, err)
|
||||
require.Equal(t, resp, "-0.70")
|
||||
|
||||
_, err = dao.Reduce(&proto.BaseKey{Key: "abcdefg"}, 2)
|
||||
require.Error(t, err)
|
||||
}
|
||||
|
||||
|
||||
```
|
Loading…
Reference in New Issue