REF: A .NET Fiddle (в основном) приведенный ниже код.Не знаете, как протестировать эту строку .NET с FluentValidation
Я пытаюсь проверить, если string
является действительным Uri
использованием FluentValidation:
public class LinksValidator : AbstractValidator<string>
{
public LinksValidator()
{
RuleFor(x => x)
.Must(LinkMustBeAUri)
.WithMessage("Link '{PropertyValue}' must be a valid URI. eg: http://www.SomeWebSite.com.au");
}
private static bool LinkMustBeAUri(string link)
{
if (string.IsNullOrWhiteSpace(link))
{
return false;
}
Uri result;
return Uri.TryCreate(link, UriKind.Absolute, out result);
}
}
и для теста проверки ...
public class LinksValidatorTests
{
private readonly LinksValidator _linksValidator;
public LinksValidatorTests()
{
_linksValidator = new LinksValidator();
}
[Theory]
[InlineData("Http://www.SomeDomain.com")]
[InlineData("https://www.SomeDomain.com")]
[InlineData("http://www.SomeDomain.com.au")]
public void GivenAValidUri_Validate_ShouldNotHaveAValidationError(string uri)
{
// Arrange.
// Act & Assert.
_linksValidator.ShouldNotHaveValidationErrorFor(l => l, uri);
}
}
но последняя строка в этом методе испытаний не компилируется:
Может ли кто-нибудь помочь, пожалуйста? Как я могу дать подсказку компилятору, чтобы сообщить, какой метод использовать.
Нет никакого способа, потому что ваши типы - это одна и та же строка, строка. Вам придется использовать другую технику, чтобы ваша лямбда не была l => l. У меня мало опыта в этом, но я никогда не видел, чтобы кто-то использовал это без проверки свойства. l => l.blah – Mikanikal