Mediatr: модульное тестирование поведения / валидация - PullRequest
0 голосов
/ 03 января 2019

У меня есть команда / обработчик, который сохраняет сущность в БД, но в моем коде она сначала проходит проверку (конвейер проверки) с помощью fluentvalidation.

Мне удалось создать успешный тест для проверки обработчика, но теперь я хотел бы убедиться, что команда сначала проходит проверку.

Как бы я поступил так? я должен вызывать проверку независимо, как я делаю с моим обработчиком? если да, то как мне это сделать

вот мой код

    [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 Ответ

0 голосов
/ 03 января 2019

Да, в модульном тестировании вам нужно вызвать валидатор вручную

// 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);
...

Также см. Расширения тестирования по умолчанию

...