Как издеваться над Microsoft.Deployment.WindowsInstaller Session
Я использую C#. Я создал установщик Wix и пользовательское действие для поддержки установщика Wix. Сейчас я пытаюсь создать юнит-тест только для CustomAction, без LUX.
Я пробовал разными способами, но не могу смоделировать сеанс Microsoft.Deployment.WindowsInstaller. Любая идея или указатели. Я использую Moq.
1 ответ
Это некрасиво, но я создал простую оболочку для сеанса. Что-то типа:
public class MockSession
{
private readonly Session _session = null;
private readonly Dictionary<string, string> _properties;
public MockSession()
{
_properties = new Dictionary<string, string>();
}
public MockSession(Session session)
{
_session = session;
}
public string this[string property]
{
get
{
if (_session)
return _session[property];
else
return _properties[property];
}
set
{
if (_session)
_session[property] = value;
else
_properties[property] = value;
}
}
}
Каждый метод CustomAction представляет собой заглушку, которая обертывает сеанс:
[CustomAction]
public static ActionResult Method(Session session)
{
var mockSession = new MockSession(session);
return MethodMock(mockSession);
}
public static ActionResult MethodMock(MockSession session)
{
// ... The real work here is testable
}
Не идеально, но в крайнем случае работает.