小编Rol*_*and的帖子

如何在单元测试中实例化Mediatr?

我正在尝试为基于CQRS / ES模式的MVC Core 2.2应用程序构建xUnit Test项目。我将MediatR用作MVC应用程序中CQRS / ES模式的一部分。

在我要测试的命令之一中,一旦客户记录已更新,我就注入MediatR来发布事件。有点像这样:

    public class UpdateCustomerCommandHandler : IRequestHandler<UpdateCustomerCommand>
    {
        public IMediator Mediator { get; set;  }

        public UpdateCustomerCommandHandler(IMediator mediator)
        {
            Mediator = mediator;
        }

        public Task<Unit> Handle(UpdateCustomerCommand request, CancellationToken cancellationToken)
        {
            //do some stuff

            Mediator.Publish(new CustomersChanged());

            return Task.FromResult(new Unit());
        }
    }
Run Code Online (Sandbox Code Playgroud)

对此命令编写单元测试时,显然,我还必须创建MediatR(或模型)实例,然后在测试执行期间将其传递给命令。

        [Fact]
        public async void UpdateCustomerCommand_CustomerDataUpdatedOnDatabase()
        {
            //Arange

            var mediator = new Mediator(); // doesn't work that way..

            UpdateCustomerCommand command = new UpdateCustomerCommand();
            UpdateCustomerCommandHandler handler = new UpdateCustomerCommandHandler(mediator);

            //Act
            Unit x = await …
Run Code Online (Sandbox Code Playgroud)

cqrs mediatr

3
推荐指数
2
解决办法
2648
查看次数

标签 统计

cqrs ×1

mediatr ×1