Недавно я применил этот атрибут шаблона регулярного выражения к одному из свойств в моем классе, чтобы оценить допустимость форматы URL. Теперь возникла проблема, что AutoFixture не может создать его экземпляр, отображающий ошибку
«AutoFixture не удалось создать экземпляр из Ploeh.AutoFixture.Kernel.RegularExpressionRequest, скорее всего, потому, что он не имеет общедоступного конструктора, является абстрактным или закрытым типом».
Я попробовал несколько предложений, таких как
var contact = _fixture.Build<ContactEntity>()
.With(c=>c.Customer.Website,
new SpecimenContext(_fixture)
.Resolve(new RegularExpressionRequest(Constants.UrlRegex)))
.Create();
а также
public class WebsiteSpecimenBuilder: ISpecimenBuilder
{
public object Create(object request,
ISpecimenContext context)
{
var pi = request as PropertyInfo;
if (pi!=null && pi.PropertyType == typeof(string)
&& (pi.Name.Equals("Email") || pi.Name.Equals("Website")))
{
//tried both of these options
return (new OmitSpecimen() || "http://www.website.com";
}
return new NoSpecimen(request);
}
}
Но я все еще не могу заставить autofixture создать класс. Я что-то упустил, чтобы создать его, или это регулярное выражение слишком сложно для автоматической фиксации?
if (pi != null && pi.PropertyType == typeof(string)) { if (pi.Name == "Email") { return "[email protected]"; } if (pi.Name == "Website") { return "http://www.blah.com"; }} return new NoSpecimen(request);
Autofixture, кажется, перезаписывает его наWebsite: "http://0#"
- person Nik M   schedule 31.03.2015