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) }