У меня есть тип, который опирается на внешний компонент, который выполняет запросы с помощью общего метода. Вот упрощенная версия того, что находится в игре:FakeItEasy: подделка вызова общего метода без указания типа
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);
}
DoSomething
метод, который я пытаюсь тест называет IQueryEngine
дважды.
В первый раз, когда он называет его типом, я могу получить доступ к моему тесту, поэтому у меня нет проблем с использованием A.CallTo
, чтобы издеваться над ним.
Но затем он вызывает второй раз с аргументом типа, к которому я не могу получить доступ (это тип internal
).
Прямо сейчас мой тест бомбит, потому что DoSomething
не ожидает возврата null от вызова _engine.Query
, но я не могу построить правильный тип возвращаемого объекта.
Как я могу издеваться над этим звонком?
Почему вы не добавляете атрибут 'InternalsVisibleTo'? –
В идеале я бы скорее не сделал этого таким образом, но так как я имел контроль над библиотекой, где определен параметр InternalType, это решение, с которым я работал. Если вы включите это в ответ, я буду рад отметить его как правильный. – Dan