Testar chamadas para métodos privados com moq

Eu tenho o método a seguir que preciso testar com o Moq. O problema é que cada método chamado na instrução switch é privado, incluindo o PublishMessage no final. Mas esse método (ProcessMessage) é público. Como posso testar isso para garantir que as chamadas sejam feitas dependendo do parâmetro? Note que eu não estou testando os métodos privados, só quero testar as "chamadas". Gostaria de zombar desses métodos particulares e verificar se eles são chamados usando a Instalação, mas o Moq não suporta zombar de métodos privados.

public void ProcessMessage(DispenserMessageDataContract dispenserMessage)
    {
        var transOptions = new TransactionOptions { IsolationLevel = IsolationLevel.ReadCommitted };
        using (var scope = new TransactionScope(TransactionScopeOption.RequiresNew, transOptions))
        {
            switch (dispenserMessage.Type)
            {
                case DispenserMessageType.AckNack:
                    UpdateAckNackMessageQueue(dispenserMessage);
                    break;

                case DispenserMessageType.FillRequest:
                    CreateFillRequestMessageQueue(dispenserMessage);
                    break;

                case DispenserMessageType.FillEvent:
                    UpdateFillEventMessageQueue(dispenserMessage);
                    break;

                case DispenserMessageType.RequestInventory:
                    CreateRequestInventoryMessageQueue(dispenserMessage);
                    break;

                case DispenserMessageType.ReceiveInventory:
                    CreateReceiveInventoryMessageQueue(dispenserMessage);
                    break;
            }

            scope.Complete();
        }

        PublishMessage(dispenserMessage);
    }

questionAnswers(4)

yourAnswerToTheQuestion