小编Val*_*ász的帖子

通过 MediatR PipelineBehavior 进行单元测试验证

我正在使用 FluentValidation 和 MediatR PipelineBehavior 来验证 CQRS 请求。我应该如何在单元测试中测试这种行为?

  1. 使用FluentValidation 的测试扩展,我仅测试规则。

    [Theory]
    [InlineData(null)]
    [InlineData("")]
    [InlineData("   ")]
    public void Should_have_error_when_name_is_empty(string recipeName)
    {
        validator.ShouldHaveValidationErrorFor(recipe => recipe.Name, recipeName);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在单元测试中手动验证请求

    [Theory]
    [InlineData("")]
    [InlineData("  ")]
    public async Task Should_not_create_recipe_when_name_is_empty(string recipeName)
    {
        var createRecipeCommand = new CreateRecipeCommand
        {
            Name = recipeName,
        };
    
        var validator = new CreateRecipeCommandValidator();
        var validationResult = validator.Validate(createRecipeCommand);
        validationResult.Errors.Should().BeEmpty();
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 初始化Pipeline行为

    [Theory]
    [InlineData("")]
    [InlineData("  ")]
    public async Task Should_not_create_recipe_when_name_is_empty(string recipeName)
    {
        var createRecipeCommand = new CreateRecipeCommand
        {
            Name = recipeName
        }; …
    Run Code Online (Sandbox Code Playgroud)

c# unit-testing cqrs fluentvalidation mediatr

6
推荐指数
1
解决办法
8802
查看次数

标签 统计

c# ×1

cqrs ×1

fluentvalidation ×1

mediatr ×1

unit-testing ×1