如何使用FakeItEasy伪造ValidationContext?

时间:2014-06-24 10:29:53

标签: asp.net-mvc unit-testing asp.net-mvc-5 fakeiteasy validationattribute

我有一个派生自 ValidationAttribute (MVC中的DataAnnotation)的课程

以下是此类的重写方法:

    protected override ValidationResult IsValid(object value, ValidationContext validationContext)
    {
        if (value == null)
            return ValidationResult.Success;

        var tagWithoutClosingRegex = new Regex(@"<[^>]+>");

        var hasTags = tagWithoutClosingRegex.IsMatch(value.ToString());

        if (!hasTags)
            return ValidationResult.Success;

        return new ValidationResult(String.Format("{0} cannot contain html tags", validationContext.DisplayName));
    }

我想为这个方法编写单元测试。如何使用FakeItEasy伪造ValidationContext以使其可测试?

对此非常感激的任何帮助

由于

1 个答案:

答案 0 :(得分:1)

一般来说,告诉我们您尝试了哪些类型的内容,以及哪些内容有效或无效,以及如何操作,这是一种很好的做法。这可能会让你在将来获得更好(和更快)的答案。有关详细信息,请参阅How to ask

但是,我可以帮助一点。

ValidationContext 密封,因此无法伪造。有关哪些类型可以伪造和不可伪造的详细信息,请参阅What can be faked

我不熟悉ValidationContext。您是否可能不需要伪造一个,您可以创建一个并为其提供将为您的测试提供服务的状态?