testing一个类是否有一个属性?
我试图做一点testing优先发展,我试图validation我的类标记了一个属性:
[SubControllerActionToViewDataAttribute] public class ScheduleController : Controller
我如何testing这个类是否有分配给它的属性?
检查一下
Attribute.GetCustomAttribute(typeof(ScheduleController), typeof(SubControllerActionToViewDataAttribute))
不为空( Assert.IsNotNull
或类似)
(我使用这个而不是IsDefined
的原因是大多数时候我想validation属性的一些属性太….)
你通常会检查一个类的属性。
这是一些示例代码。
typeof(ScheduleController) .IsDefined(typeof(SubControllerActionToViewDataAttribute), false);
我认为在许多情况下,在unit testing中testing属性的存在是错误的。 因为我没有使用MVC的贡献的子控制器function,我不能评论是否适合在这种情况下。
对此也可以使用generics:
var type = typeof(SomeType); var attribute = type.GetCustomAttribute<SomeAttribute>();
这样你就不需要另一种types的typeof(...)
,这可以使代码更清洁。
我知道这个线程真的很老,但如果有人偶然发现,你可能会发现Fluentassertions项目对于做这种断言非常方便。
typeof(MyPresentationModel).Should().BeDecoratedWith<SomeAttribute>();