Я изо всех сил фальсифицировать эти две строки кода:Как я могу подделать Assembly.LoadFile и Assembly.GetTypes?
Assembly asm = Assembly.LoadFile(fileName);
Type[] asmTypes = loggerAssembly.GetTypes();
Когда я типа System.Reflection.ShimAssembly
нет такого типа, как ShimAssembly
, как, например, в случае System.IO.ShimFile
, но только StubAssembly
.
Я мог бы реорганизовать код и сделать это со статическим вспомогательным методом, например LoadAssemblyAndGetTypes
, но это, по-видимому, является ненужным обходным путем. Я бы предпочел решение .
Если он работал только так:
var shimAsm = System.Reflection.Fakes.ShimAssembly.LoadFile = (fileName) =>
{
return ???
};
var types = shimAsm.GetTypes =() =>
{
return new Type[] { new object() };
};
Почему это работает для System.IO.File
и не System.Reflection.Assembly
. Это потому, что Assembly
является абстрактным классом?
В моем тестовом модуле я хочу, чтобы проверить, если мой узел загрузчик правильно проверяет, загруженная сборка содержит типы, которые реализуют некоторые интерфейсы, так что я могу создать экземпляр их позже позже.