Mediatr:单元测试行为/验证

6

我有一个将实体保存到数据库的命令/处理程序,但在我的代码中,它首先通过流畅验证进行验证(验证管道)。

我已经成功创建了用于测试处理程序的成功测试,但现在我想确保命令首先通过验证。

我应该如何做呢?我是否应该像处理程序一样独立调用验证?如果是这样,我应该如何做呢?

这是我的代码:

    [Test]
    public  async Task CreateCoinCommand_Success()
    {
        var context = new Mock<EventsContext>();
        var ownersMock = CreateDbSetMock(new List<Owner>());

        context.Setup(x => x.Owners).Returns(ownersMock.Object);

        var handler = new CreateCoinCommandHandler(context.Object, mapper.Object );


        var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
            null, "https://google.com", null, null, null, new []{1,2});

        var cltToken = new System.Threading.CancellationToken();
        var result = await handler.Handle(cmd, cltToken);

        Assert.IsInstanceOf<Unit>(result);
    }

我的验证器叫做CreateCoinCommandValidator

1个回答

5

是的,在单元测试中需要手动调用验证器。

// Arrange
var validator = new CreateCoinCommandValidator();
var cmd = new CreateCoinCommand(1, "sym", "name", null, null, null, 1, "description",
            null, "https://google.com", null, null, null, new []{1,2});

// Act
var validationResult = await validator.ValidateAsync(cmd);

// Assert
Assert.True(validationResult.IsValid);
...

同时查看默认测试扩展


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接