[英]Testing masstransit consumer
I am trying to test masstransit consumer my consumer look like this: 我正在尝试测试大众运输消费者,我的消费者如下所示:
public class FilePolicyEvaluationConsumer : IFilePolicyEvaluationConsumer
{
public readonly IFilePolicyEvaluationCore _filePolicyEvaluationCore;
public readonly IRepositoryClient _repositoryClient;
public readonly IFPRepository _fPRepository;
public FilePolicyEvaluationConsumer()
{
}
public FilePolicyEvaluationConsumer(IFilePolicyEvaluationCore filePolicyEvaluationCore, IRepositoryClient repositoryClient, IFPRepository fPRepository)
{
_filePolicyEvaluationCore = filePolicyEvaluationCore;
_repositoryClient = repositoryClient;
_fPRepository = fPRepository;
}
public Task Consume(ConsumeContext<InvokePolicyOnFileMessage> context)
{
return Task.Run( async () => {
Guid fileId = context.Message.FileId;
FileMetadata fileMetaData = await _repositoryClient.GetFileMetadata(fileId);
_filePolicyEvaluationCore.Run(fileMetaData, context.Message.CorrelationId);
});
}
but when i configure the test like this 但是当我像这样配置测试时
_harness = new InMemoryTestHarness();
FilePolicyEvaluationConsumer filePolicy = new FilePolicyEvaluationConsumer();
_consumer = _harness.Consumer<FilePolicyEvaluationConsumer>();
await _harness.Start();
await _harness.InputQueueSendEndpoint.Send(message1);
when i enter in the test to consumer all objects _filePolicyEvaluationCore,_repositoryClient,_fPRepository in the consumer are null, how can i inject to this objects? 当我进入测试以使用消费者时,消费者中的所有对象_filePolicyEvaluationCore,_repositoryClient,_fPRepository为空,我如何注入该对象?
It is null
because you probably use a container in your production code and inject the constructor parameter. 它为
null
因为您可能在生产代码中使用了一个容器并注入了构造函数参数。 MassTransit has no injection built-in since it does not use any containers. MassTransit不内置任何注入功能,因为它不使用任何容器。
You can use the consumer factory overload to make it work: 您可以使用使用者工厂重载使其工作:
_harness = new InMemoryTestHarness();
var filePolicy = new FilePolicyEvaluationConsumer();
_consumer = _harness.Consumer(
() => new FilePolicyEvaluationConsumer(filePolicy));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.