package com.rj.service; import com.rj.config.SiliconFlowConfig; import com.rj.dto.SiliconFlowTtsRequest; import com.rj.dto.SiliconFlowTtsResponse; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.TestPropertySource; import static org.junit.jupiter.api.Assertions.*; /** * SiliconFlow TTS 服务测试类 * * @author rj * @date 2025-01-02 */ @SpringBootTest @TestPropertySource(properties = { "siliconflow.enabled=true", "siliconflow.api-key=test-api-key", "siliconflow.base-url=https://api.siliconflow.cn/v1" }) public class SiliconFlowTtsServiceTest { @Autowired private SiliconFlowTtsService ttsService; @Autowired private SiliconFlowConfig config; @Test public void testServiceConfiguration() { assertNotNull(config); assertTrue(config.isEnabled()); assertEquals("https://api.siliconflow.cn/v1", config.getBaseUrl()); assertEquals("fnlp/MOSS-TTSD-v0.5", config.getDefaultTtsModel()); } @Test public void testServiceAvailability() { // 注意:这个测试需要真实的API Key才能通过 // 在测试环境中,我们主要测试配置是否正确 assertNotNull(ttsService); } @Test public void testTtsRequestCreation() { SiliconFlowTtsRequest request = new SiliconFlowTtsRequest(); request.setModel("fnlp/MOSS-TTSD-v0.5"); request.setInput("[S1]Hello, how are you today?[S2]I'm doing great, thanks for asking![S1]That's wonderful to hear"); // voice参数有默认值,但也可以手动设置 assertNotNull(request); assertEquals("fnlp/MOSS-TTSD-v0.5", request.getModel()); assertNotNull(request.getInput()); assertEquals("fnlp/MOSS-TTSD-v0.5:claire", request.getVoice()); // 验证默认voice参数 } @Test public void testTtsResponseCreation() { SiliconFlowTtsResponse successResponse = SiliconFlowTtsResponse.success( "base64AudioData", "wav", 22050, 5.5 ); assertTrue(successResponse.isSuccess()); assertEquals("base64AudioData", successResponse.getAudio()); assertEquals("wav", successResponse.getFormat()); assertEquals(22050, successResponse.getSampleRate()); assertEquals(5.5, successResponse.getDuration()); SiliconFlowTtsResponse errorResponse = SiliconFlowTtsResponse.error("API调用失败"); assertFalse(errorResponse.isSuccess()); assertEquals("API调用失败", errorResponse.getMessage()); } }