Как издеваться над 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
}

Не идеально, но в крайнем случае работает.

Другие вопросы по тегам