38 lines
1012 B
Go
38 lines
1012 B
Go
package service
|
||
|
||
import (
|
||
"testing"
|
||
|
||
"github.com/stretchr/testify/assert"
|
||
"github.com/stretchr/testify/mock"
|
||
"knowlege-lsxd/internal/container"
|
||
"knowlege-lsxd/internal/runtime"
|
||
"knowlege-lsxd/internal/types"
|
||
"knowlege-lsxd/internal/types/interfaces"
|
||
)
|
||
|
||
func Test_CreateKnowledge(t *testing.T) {
|
||
// 1. 构建容器
|
||
container := container.BuildContainer(runtime.GetContainer())
|
||
|
||
// 2. Mock 依赖
|
||
mockKBRepo := new(MockKnowledgeBaseRepo)
|
||
must(container.Provide(func() interfaces.KnowledgeBaseRepository {
|
||
return mockKBRepo
|
||
}))
|
||
|
||
// 3. 解析服务(自动注入 Mock 的 KnowledgeBaseRepository)
|
||
var service *knowledgeBaseService
|
||
must(container.Invoke(func(k *knowledgeBaseService) {
|
||
service = k
|
||
}))
|
||
|
||
// 4. 设置 Mock 预期
|
||
mockKBRepo.On("Create", context.Background(), mock.Anything).Return(nil)
|
||
|
||
// 5. 调用并断言
|
||
base, err := service.CreateKnowledgeBase(context.Background(), &types.KnowledgeBase{Name: "Test"})
|
||
assert.NoError(t, err, base)
|
||
mockKBRepo.AssertExpectations(t)
|
||
}
|