|
|
@@ -0,0 +1,72 @@ |
|
|
|
using System; |
|
|
|
using System.Linq; |
|
|
|
using System.Reflection; |
|
|
|
using DotNetCore.CAP.Abstractions; |
|
|
|
using DotNetCore.CAP.Internal; |
|
|
|
using Microsoft.Extensions.DependencyInjection; |
|
|
|
using Microsoft.Extensions.Logging; |
|
|
|
using Xunit; |
|
|
|
|
|
|
|
namespace DotNetCore.CAP.Test |
|
|
|
{ |
|
|
|
public class ConsumerInvokerFactoryTest |
|
|
|
{ |
|
|
|
IConsumerInvokerFactory consumerInvokerFactory; |
|
|
|
|
|
|
|
public ConsumerInvokerFactoryTest() |
|
|
|
{ |
|
|
|
var services = new ServiceCollection(); |
|
|
|
services.AddLogging(); |
|
|
|
var provider = services.BuildServiceProvider(); |
|
|
|
var logFactory = provider.GetRequiredService<ILoggerFactory>(); |
|
|
|
var binder = new ModelBinderFactory(); |
|
|
|
|
|
|
|
consumerInvokerFactory = new ConsumerInvokerFactory(logFactory, binder, provider); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void CreateInvokerTest() |
|
|
|
{ |
|
|
|
var methodInfo = typeof(Sample).GetRuntimeMethods() |
|
|
|
.Single(x => x.Name == nameof(Sample.ThrowException)); |
|
|
|
|
|
|
|
var description = new ConsumerExecutorDescriptor |
|
|
|
{ |
|
|
|
MethodInfo = methodInfo, |
|
|
|
ImplTypeInfo = typeof(Sample).GetTypeInfo() |
|
|
|
}; |
|
|
|
var messageContext = new MessageContext(); |
|
|
|
|
|
|
|
var context = new ConsumerContext(description, messageContext); |
|
|
|
|
|
|
|
var invoker = consumerInvokerFactory.CreateInvoker(context); |
|
|
|
|
|
|
|
Assert.NotNull(invoker); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData(nameof(Sample.ThrowException))] |
|
|
|
[InlineData(nameof(Sample.AsyncMethod))] |
|
|
|
public async void InvokeMethodTest(string methodName) |
|
|
|
{ |
|
|
|
var methodInfo = typeof(Sample).GetRuntimeMethods() |
|
|
|
.Single(x => x.Name == methodName); |
|
|
|
|
|
|
|
var description = new ConsumerExecutorDescriptor |
|
|
|
{ |
|
|
|
MethodInfo = methodInfo, |
|
|
|
ImplTypeInfo = typeof(Sample).GetTypeInfo() |
|
|
|
}; |
|
|
|
var messageContext = new MessageContext(); |
|
|
|
|
|
|
|
var context = new ConsumerContext(description, messageContext); |
|
|
|
|
|
|
|
var invoker = consumerInvokerFactory.CreateInvoker(context); |
|
|
|
|
|
|
|
await Assert.ThrowsAsync(typeof(Exception), async () => |
|
|
|
{ |
|
|
|
await invoker.InvokeAsync(); |
|
|
|
}); |
|
|
|
} |
|
|
|
} |
|
|
|
} |