Как использовать Блоки проверки допустимости Аннотирования данных в Winforms?

Короткий ответ

Измените expect на

expect(error.message).toBe('child "path1" fails because ["path1" is not allowed to be empty]');

... и это будет работать.


Подробности

JavaScript позволяет определять строки, используя одинарные кавычки: 'a string' или двойные кавычки: "a string".

Из документа MDN :

В отличие от некоторых других языков, JavaScript не делает различий между строками в одинарных кавычках и строками в двойных кавычках

blockquote> [ 1118] ... так что не имеет значения, какой подход вы используете.


Одинарные кавычки прекрасно работают в строке, определенной двойными кавычками:

const singleQuotes = "has 'single quotes' in it";

... и то же самое верно для двойных кавычек в строке, содержащей одинарные кавычки:

[ 112]

... но одиночные кавычки необходимо экранировать, если они находятся в строке, определенной одинарными кавычками:

const singleQuotes = 'has \'single quotes\' in it';

... и то же самое верно для двойных кавычек в строка, определенная двойными кавычками:

const doubleQuotes = "has \"double quotes\" in it";

Вы видите escape-символы в выходных данных Jest, потому что Jest форматирует выходную строку с двойными кавычками вокруг нее, поэтому двойные кавычки внутри нее нужно сбежать.

5
задан Peter Gfader 16 December 2008 в 09:47
поделиться

1 ответ

Я адаптировал решение, найденное по http://blog.codeville.net/category/validation/page/2/

public class DataValidator
    {
    public class ErrorInfo
    {
        public ErrorInfo(string property, string message)
        {
            this.Property = property;
            this.Message = message;
        }

        public string Message;
        public string Property;
    }

    public static IEnumerable<ErrorInfo> Validate(object instance)
    {
        return from prop in instance.GetType().GetProperties()
               from attribute in prop.GetCustomAttributes(typeof(ValidationAttribute), true).OfType<ValidationAttribute>()
               where !attribute.IsValid(prop.GetValue(instance, null))
               select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty));
    }
}

Это позволило бы Вам использовать следующий код для проверки любого объекта с помощью следующего синтаксиса:

var errors = DataValidator.Validate(obj);

if (errors.Any()) throw new ValidationException();
9
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: