Короткий ответ
Измените 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
форматирует выходную строку с двойными кавычками вокруг нее, поэтому двойные кавычки внутри нее нужно сбежать.
Я адаптировал решение, найденное по 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();