Как подделать ValidationContext с помощью FakeItEasy?

У меня есть один класс, производный от ValidationAttribute (от DataAnnotation в MVC)

Ниже приведен переопределенный метод этого класса:

    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));
    }

Я хочу написать модульные тесты для этого метода. Как я могу подделать ValidationContext с помощью FakeItEasy, чтобы сделать это проверяемым?

Любая помощь в этом очень ценится

Спасибо


person Nirman    schedule 24.06.2014    source источник


Ответы (1)


В общем, рекомендуется рассказывать нам, что вы пробовали, что сработало или не сработало и как. Это, вероятно, даст вам более качественные (и более быстрые) ответы в будущем. См. Как запросить дополнительные указатели.

Тем не менее, я могу немного помочь.

Контекст проверки запечатан, поэтому его нельзя подделать. Подробнее о том, какие виды типы могут и не могут быть подделаны.

Я не знаком с ValidationContext. Возможно ли, что вам не нужно подделывать его, что вы можете просто создать его и предоставить ему состояние, которое будет обслуживать ваши тесты?

person Blair Conrad    schedule 24.06.2014
comment
+1 Я не вижу веских причин использовать поддельный ValidationContext вместо настоящего в приведенном примере. - person Adam Ralph; 24.06.2014