我正在尝试进行一些 Test-First 开发,并试图验证我的类是否标记了一个属性:
[SubControllerActionToViewDataAttribute] public class ScheduleController : Controller
我如何进行单元测试,以确定该类是否具有分配给它的属性?
与通常检查类上的属性相同。
下面是一些示例代码。
typeof(ScheduleController) .IsDefined(typeof(SubControllerActionToViewDataAttribute), false);
我认为在许多情况下,测试单元测试中是否存在属性是错误的。由于我没有使用 MVC 的子控制器功能,我不能评论它是否适合在这种情况下虽然。
检查一下
Attribute.GetCustomAttribute(typeof(ScheduleController), typeof(SubControllerActionToViewDataAttribute))
不为空(Assert.IsNotNull或类似)
Assert.IsNotNull
(我使用它而不使用 IsDefined的原因是,大多数时候我也想验证属性的一些属性... ...)
IsDefined
我知道这个线程真的很老,但如果有人偶然发现它,你可能会发现 流利的断言项目非常方便做这种断言。
typeof(MyPresentationModel).Should().BeDecoratedWith<SomeAttribute>();
在这方面也可以使用泛型:
var type = typeof(SomeType); var attribute = type.GetCustomAttribute<SomeAttribute>();
这样,您就不需要另一个 typeof(...),它可以使代码更清晰。
typeof(...)