应文浩wenhao.ying@xiaobao100.com bce2612b64 feat: 完善具体实现
2026-04-06 15:25:34 +08:00

48 lines
1.6 KiB
C#

using FluentAssertions;
using FreeCode.ApiProviders;
using FreeCode.Core.Interfaces;
using FreeCode.Tests.Unit.Helpers;
using Xunit;
namespace FreeCode.Tests.Unit.ApiProviders;
public sealed class ProviderRouterTests
{
[Fact]
public void GetActiveProvider_DefaultsToAnthropic()
{
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", null);
var services = CreateServices();
var sut = new ApiProviderRouter(services);
sut.GetActiveProvider().Should().BeOfType<AnthropicProvider>();
}
[Fact]
public void GetActiveProvider_WithOpenAiFlag_SelectsCodex()
{
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", "1");
try
{
var services = CreateServices();
var sut = new ApiProviderRouter(services);
sut.GetActiveProvider().Should().BeOfType<CodexProvider>();
}
finally
{
Environment.SetEnvironmentVariable("CLAUDE_CODE_USE_OPENAI", null);
}
}
private static IServiceProvider CreateServices()
=> new SimpleServiceProvider()
.AddService(typeof(AnthropicProvider), new AnthropicProvider(new HttpClient(new MockHttpHandler("data: {\"type\":\"message_stop\"}"))) )
.AddService(typeof(CodexProvider), new CodexProvider(new HttpClient(new MockHttpHandler("data: {\"type\":\"response.completed\"}"))))
.AddService(typeof(BedrockProvider), new BedrockProvider())
.AddService(typeof(VertexProvider), new VertexProvider())
.AddService(typeof(FoundryProvider), new FoundryProvider());
}