Ich habe einen Typ, der auf einer externen Komponente beruht, die Abfragen über eine generische Methode ausführt. Hier ist eine vereinfachte Version von dem, was im Spiel:FakeItEasy: Einen Aufruf einer generischen Methode fälschen, ohne den Typ anzugeben
public class UnitUnderTest
{
private IQueryEngine _engine;
public UnitUnderTest(IQueryEngine engine)
{
_engine = engine;
}
public OutputType DoSomething()
{
_engine.Query<ExternalType>(...);
_engine.Query<InternalType>(...);
}
}
public interface IQueryEngine
{
IEnumerable<T> Query<T>(string conditions);
}
Die DoSomething
Methode, die ich zu Test bin versucht, ruft IQueryEngine
zweimal.
Das erste Mal es ruft es mit einem Typ, den ich von meinem Test zugreifen kann, so habe ich kein Problem mit A.CallTo
, um es zu verspotten.
Aber dann ruft es ein zweites Mal mit einem Typ Argument, das ich nicht zugreifen kann (es ist ein internal
Typ).
Im Moment bombardiert mein Test, weil DoSomething
nicht erwartet eine Null von dem Aufruf an , aber ich kann den richtigen Typ des Objekts nicht zurückgeben.
Wie kann ich diesen Anruf verspotten?
Warum fügen Sie das Attribut 'InternalsVisibleTo' nicht hinzu? –
Idealerweise hätte ich es lieber nicht so gemacht, aber da ich die Kontrolle über die Bibliothek hatte, in der 'InternalType' definiert ist, bin ich mit dieser Lösung gegangen. Wenn Sie dies zu einer Antwort machen, werde ich es gerne als die richtige markieren. – Dan