Вот два возможных решения, которые я нашел:
1) Как предложено @ajz, вы можете создать интерфейс с методом GetEntryAssembly, который возвращает Assembly.GetEntryAssembly()
, чтобы вы могли использовать Mock / Setup для возврата того, что вы хотите для ваши тесты.
2) Вы можете создать класс с помощью GetEntryAssembly Fun c следующим образом:
public static class AssemblyHelper
{
public static Func<Assembly> GetEntryAssembly = () => Assembly.GetEntryAssembly();
}
В своем методе тестирования вы можете переопределить это поведение, переназначив встроенную функцию на это:
AssemblyHelper.GetEntryAssembly = () => assembly;
Мы пошли со вторым решением просто потому, что раньше вызывали Assembly.GetEntryAssembly()
внутри конструктора stati c, и я не думаю, что в любом случае я могу насмехаться над объектом и устанавливать его в поле, прежде чем пройти через это.