小编pan*_*o89的帖子

如何订购属于一个测试集合但分布在多个测试类中的 xUnit 测试?

我有一些测试方法,它们分布在多个测试类中,但属于单个测试集合。我正在使用 xUnit 提供的 ITestCaseOrderer,但它仅对单个测试类中的测试方法进行排序。

[AttributeUsage(AttributeTargets.Method)]
public class TestPriorityAttribute : Attribute
{
    public TestPriorityAttribute(int priority)
    {
        this.Priority = priority;
    }

    public int Priority { get; }
}
Run Code Online (Sandbox Code Playgroud)

我已经以下面的方式实现了我的优先排序器。

public class PriorityOrderer : ITestCaseOrderer
{
    public IEnumerable<TTestCase> OrderTestCases<TTestCase>(IEnumerable<TTestCase> testCases) where TTestCase : ITestCase
    {
        var sortedMethods = new Dictionary<int, TTestCase>();

        foreach (var testCase in testCases)
        {
            var attributeInfo = testCase.TestMethod.Method.GetCustomAttributes(typeof(TestPriorityAttribute).AssemblyQualifiedName)
                .SingleOrDefault();
            if (attributeInfo != null)
            {
                var priority = attributeInfo.GetNamedArgument<int>("Priority");
                sortedMethods.Add(priority, testCase);
            }
        }

        return sortedMethods.OrderBy(x => x.Key).Select(x => x.Value);
    }
} …
Run Code Online (Sandbox Code Playgroud)

c# integration-testing unit-testing xunit xunit.net

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

在分隔后从较大的字符串创建字符串数组

我有一个字符串输入,看起来像这样var input = "AB-PQ-EF=CD-IJ=XY-JK".我想知道是否有一种string.split()方法在C#和LINQ中使用方法,这样我就可以得到一个看起来像这样的字符串数组var output = ["AB-PQ", "PQ-EF", "EF=CD", "CD-IJ", "IJ=XY", "XY-JK"].目前我通过迭代输入字符串手动进行相同的转换.

c# regex linq string split

5
推荐指数
1
解决办法
146
查看次数

类转换器未转换为数字数组

我有一个 DTO,其中有一个字段,它是一个数字数组。这些 id 来自 API 查询参数。我正在使用 Class Transformer 将这些 id 转换为数字数组。但我只得到一个字符串数组。我的 DTO 课程如下。

export class EvseGetQueryDto {
  ...
  ...

  @IsOptional()
  @IsArray()
  @IsNumber({}, {each: true})
  @ApiProperty({ type: [Number] })
  @Type(() => Number)
  locations?: number[];

  ...
  ...
}
Run Code Online (Sandbox Code Playgroud)

我的控制器代码如下所示。

async GetAll(@Query() query: EvseGetQueryDto): Promise<EvseDto[]> {
    return await this.evseService.GetAll(query);
}
Run Code Online (Sandbox Code Playgroud)

如果我像下面这样调用我的控制器,我仍然['1', '2']在我的位置字段中。

http://localhost:3000/evses?locations[]=1&locations[]=2
Run Code Online (Sandbox Code Playgroud)

任何人都可以指导我吗?

typescript class-validator nestjs class-transformer

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