Ich habe ein paar Methoden, die Reflektion verwenden, um von einem Objekttyp zu einem anderen zu transformieren. Ich bin dabei, die Transformationsmethoden über Moq zu testen und bin auf ein Verhalten gestoßen, mit dem ich nicht umgehen kann. Wenn ich über ein Moq-Objekt reflektiere, um PropertyInfo's zu erhalten, erhalte ich zwei zusätzliche Objekte.Das Reflektieren auf einem Moq-Objekt erzeugt 2 zusätzliche Eigenschaften
Moq.Mock``1[Namespace.Class+IElement] Mock
Moq.Mock Mock
Der Code, dies zu reproduzieren ist unten:
public void Moq_Reflection() {
var realElement = new Stuff();
// Produces 2 items
PropertyInfo[] pInfo = realElement.GetType().GetProperties();
var mockElement = new Mock<IElement>();
mockElement.Setup(e => e.Property1).Returns(12);
mockElement.Setup(e => e.Property2).Returns(42);
// Produces 4 items
pInfo = mockElement.Object.GetType().GetProperties();
}
public interface IElement {
int Property1 { get; set; }
int Property2 { get; set; }
}
public class Stuff : IElement
{
public int Property1
{
get { return -1; }
set { }
}
public int Property2
{
get { return -2; }
set { }
}
}
Gibt es eine Möglichkeit auf einem Moq-Objekt zu reflektieren und diese Eigenschaften nicht abrufen?
Ich hatte gehofft, es müsste nicht so sein. Es gibt nichts Hässlicheres als Code in Ihrer Haupt-App zu schreiben, um Ihre Tests zu kompensieren. Danke, ich schätze die Hilfe! –