# v1.4.0 - 测试策略

## 单元测试

```go
func TestSendMessage(t *testing.T) {
    // 使用 testify/mock
    mockDAO := new(MockMessageDAO)
    core := NewMessageCore(mockDAO)
    
    mockDAO.On("Insert", mock.Anything, mock.Anything).Return(int64(1), nil)
    
    msg, err := core.SendMessage(ctx, req)
    
    assert.NoError(t, err)
    assert.Equal(t, int64(1), msg.ID)
    mockDAO.AssertExpectations(t)
}
```

## 集成测试

```go
func TestMessageFlow(t *testing.T) {
    // 使用 testcontainers 启动真实依赖
    mysql := testcontainers.NewMySQLContainer()
    redis := testcontainers.NewRedisContainer()
    
    // 执行完整流程
    msg := sendMessage(t, user1, user2, "hello")
    assertMessageDelivered(t, user2, msg.ID)
}
```

## 负载测试

```go
func BenchmarkSendMessage(b *testing.B) {
    for i := 0; i < b.N; i++ {
        core.SendMessage(ctx, req)
    }
}
```
