Expand a few DI-related tests (#201)
This commit is contained in:
parent
4ecb6bc240
commit
a04cf6a2f5
1 changed files with 55 additions and 15 deletions
|
|
@ -45,20 +45,47 @@ public class McpServerToolTests
|
|||
Assert.Equal("42", result.Content[0].Text);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public async Task SupportsServiceFromDI()
|
||||
[Theory]
|
||||
[InlineData(ServiceLifetime.Singleton)]
|
||||
[InlineData(ServiceLifetime.Scoped)]
|
||||
[InlineData(ServiceLifetime.Transient)]
|
||||
public async Task SupportsServiceFromDI(ServiceLifetime injectedArgumentLifetime)
|
||||
{
|
||||
MyService expectedMyService = new();
|
||||
MyService singletonService = new();
|
||||
|
||||
ServiceCollection sc = new();
|
||||
sc.AddSingleton(expectedMyService);
|
||||
switch (injectedArgumentLifetime)
|
||||
{
|
||||
case ServiceLifetime.Singleton:
|
||||
sc.AddSingleton(singletonService);
|
||||
break;
|
||||
|
||||
case ServiceLifetime.Scoped:
|
||||
sc.AddScoped(_ => new MyService());
|
||||
break;
|
||||
|
||||
case ServiceLifetime.Transient:
|
||||
sc.AddTransient(_ => new MyService());
|
||||
break;
|
||||
}
|
||||
|
||||
sc.AddSingleton(services =>
|
||||
{
|
||||
return McpServerTool.Create((MyService actualMyService) =>
|
||||
{
|
||||
Assert.NotNull(actualMyService);
|
||||
if (injectedArgumentLifetime == ServiceLifetime.Singleton)
|
||||
{
|
||||
Assert.Same(singletonService, actualMyService);
|
||||
}
|
||||
|
||||
return "42";
|
||||
}, new() { Services = services });
|
||||
});
|
||||
|
||||
IServiceProvider services = sc.BuildServiceProvider();
|
||||
|
||||
McpServerTool tool = McpServerTool.Create((MyService actualMyService) =>
|
||||
{
|
||||
Assert.Same(expectedMyService, actualMyService);
|
||||
return "42";
|
||||
}, new() { Services = services });
|
||||
McpServerTool tool = services.GetRequiredService<McpServerTool>();
|
||||
|
||||
Assert.DoesNotContain("actualMyService", JsonSerializer.Serialize(tool.ProtocolTool.InputSchema));
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue