xUnit Проверка наличия атрибутов в классе или методе. - PullRequest
0 голосов
/ 17 мая 2019

Есть ли способ с 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

1 Ответ

1 голос
/ 19 мая 2019

Вы можете получить доступ к атрибутам и их данным, используя отражение:
Доступ к атрибутам с помощью Reflection (C #)
Получение информации, хранящейся в атрибутах

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

[Fact]
public void GetAll_ShouldBeDecoratedWithHttpGetAttribute()
{
    var getSomething = nameof(_controller.GetSomething);
    typeof(MyController).GetTypeInfo()
        .GetMethod(getSomething)
        .Should()
        .BeDecoratedWith<HttpGetAttribute>();
}
...