我有一些测试方法,它们分布在多个测试类中,但属于单个测试集合。我正在使用 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) 我有一个字符串输入,看起来像这样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"].目前我通过迭代输入字符串手动进行相同的转换.
我有一个 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)
任何人都可以指导我吗?
c# ×2
linq ×1
nestjs ×1
regex ×1
split ×1
string ×1
typescript ×1
unit-testing ×1
xunit ×1
xunit.net ×1