Тестовое сообщение - PullRequest
       8

Тестовое сообщение

0 голосов
/ 27 апреля 2018

Сейчас я работаю над написанием модульного теста для функции запуска Azure Service Bus. Настоятельно необходимо каким-то образом смоделировать BrokeredMessage объект, который передается в функцию. Объявление функции приведено ниже:

public static void Run(
            [ServiceBusTrigger("saas01.queue.dbmigration", AccessRights.Manage, Connection = "connection")]BrokeredMessage message)

К сожалению, я не могу найти подходящий способ издеваться над ним. Это вряд ли издевается над этим классом, и я не могу создать обертку вокруг него. У вас есть идеи по этому поводу? Спасибо за помощь

1 Ответ

0 голосов
/ 28 апреля 2018

Одним из решений является создание оболочки вокруг BrokeredMessage, которую вы можете протестировать, как это делается здесь . Вот также сообщение MSDN для команды ServiceBus, которое также говорит об использовании оболочки.

Обратите внимание, что в Azure Functions V2 используется класс Message , который является открытым и не закрытым.

    [FunctionName("ServiceBusFunc")]
    public static void Run([ServiceBusTrigger("myqueue", AccessRights.Manage, Connection = "ServiceBus")]BrokeredMessage myQueueItem, TraceWriter log)
    {
        var message = new MyBrokeredMessage(myQueueItem);
        BusinessLogic(message, log);
    }

    public static void BusinessLogic(MyBrokeredMessage myMessage, TraceWriter log)
    {
        var stream = myMessage.GetBody<Stream>();
        var reader = new StreamReader(stream);
        log.Info($"C# ServiceBus queue trigger function processed message: '{reader.ReadToEnd() }'");
    }

    public class MyBrokeredMessage
    {
        private BrokeredMessage _msg;

        public MyBrokeredMessage(BrokeredMessage msg) => _msg = msg;

        public T GetBody<T>()
        {
            return _msg.GetBody<T>();
        }
    }
...