Tworzę konstruktor próbek AutoFixture dla określonego typu, w tym przypadku System.Data.DataSet
. Budowniczy zwróci numer FakeDataSet
, który jest dostosowany do testowania na poziomie DataSet
.Tworzenie konstruktora próbek AutoFixture dla typu
Poniższe nie działa, ponieważ dataSet
zawsze zwraca wartość zerową, nawet jeśli żądane jest DataSet
(mogę stwierdzić, wykonując wiercenia w właściwościach request
).
public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var dataSet = request as DataSet;
if (dataSet == null)
{
return new NoSpecimen(request);
}
return new FakeDataSet();
}
}
Ta odmiana działa, ale wydaje się zbyt skomplikowana. Wydaje się, że istnieje lepszy sposób na osiągnięcie tego samego, a ja po prostu czegoś brakuje.
public class DataSetBuilder : ISpecimenBuilder
{
public object Create(object request, ISpecimenContext context)
{
var seededRequest = request as SeededRequest;
if (seededRequest == null)
{
return new NoSpecimen(request);
}
var requestType = seededRequest.Request as Type;
if (requestType == null)
{
return new NoSpecimen(request);
}
if (requestType.Name != "DataSet")
{
return new NoSpecimen(request);
}
return new FakeDataSet();
}
}
Zgadzam się, korzystanie z rejestru jest drogą do zrobienia. Dzięki! –
Szybkie pytanie: Nie mogę wykonać var t = request jako Type; ponieważ zawsze zwraca wartość null. Jest zawsze typu SeededRequest. Czemu? –
@ AdanayMartín Jeśli _always_ zwraca 'null', oznacza to, że coś jest nie tak. Odpowiedź (w nowym pytaniu) jest wymagana, gdybym miał nawet szansę na odpowiedź. –