xUnit 检查 Class 或方法上是否存在属性
xUnit Check if Attribut(es) exist on a Class or Method
xUnit 有没有办法测试方法是否具有特定属性?
[HttpGet]
[SwaggerOperation(OperationId = "blah", Summary = "blah", Description = "blah")]
[ProducesResponseType((int)HttpStatusCode.OK)]
public async Task<ActionResult<IList<string>>> GetSomething
(
[Required, FromRoute(Name = "blah")] Guid aGuid,
)
{}
我希望能够测试 [HttpGet]
和 GetSomething
方法中存在的所有其他属性。另外,如果可能的话,想检查 [Required]
属性是否在方法参数 aGuid
上
您可以使用反射访问属性及其数据:
Accessing Attributes by Using Reflection (C#)
Retrieving Information Stored in Attributes
但我建议使用 FluentAssertions 库,它以流畅可读的方式提供相同的方法。
[Fact]
public void GetAll_ShouldBeDecoratedWithHttpGetAttribute()
{
var getSomething = nameof(_controller.GetSomething);
typeof(MyController).GetTypeInfo()
.GetMethod(getSomething)
.Should()
.BeDecoratedWith<HttpGetAttribute>();
}
xUnit 有没有办法测试方法是否具有特定属性?
[HttpGet]
[SwaggerOperation(OperationId = "blah", Summary = "blah", Description = "blah")]
[ProducesResponseType((int)HttpStatusCode.OK)]
public async Task<ActionResult<IList<string>>> GetSomething
(
[Required, FromRoute(Name = "blah")] Guid aGuid,
)
{}
我希望能够测试 [HttpGet]
和 GetSomething
方法中存在的所有其他属性。另外,如果可能的话,想检查 [Required]
属性是否在方法参数 aGuid
您可以使用反射访问属性及其数据:
Accessing Attributes by Using Reflection (C#)
Retrieving Information Stored in Attributes
但我建议使用 FluentAssertions 库,它以流畅可读的方式提供相同的方法。
[Fact]
public void GetAll_ShouldBeDecoratedWithHttpGetAttribute()
{
var getSomething = nameof(_controller.GetSomething);
typeof(MyController).GetTypeInfo()
.GetMethod(getSomething)
.Should()
.BeDecoratedWith<HttpGetAttribute>();
}