簡體   English   中英

Azure 函數中的單元測試 RabbitMQ 使用 xUnit 測試

[英]Unit Testing in Azure Functions RabbitMQ using xUnit Test

我根據如何對 Azure 函數進行 xUnit 測試進行了一些谷歌搜索,但我看到的示例使用的是HTTPRequest

有沒有辦法對 RabbitMQ 進行 xUnit 測試? 這是我的 function:

    [FunctionName("MyFirstAzureFunction")]
    public static async void RabbitMQTrigger_MyFirstAzureFunction(
        [RabbitMQTrigger("MyFirstAzureFunction.Queue", ConnectionStringSetting = "ConnString")]string inputEvent, 
        [RabbitMQ(QueueName = "MyFirstAzureFunction.Queue", ConnectionStringSetting = "ConnString")]IAsyncCollector<string> outputEvent,
        ILogger log)
    {
        //SOME FUNCTION HERE
        return
        }
        catch (Exception ex)
        {
            await outputEvent.AddAsync(inputEvent);
        }
    }

如評論中所述,您可以使用Moq模擬IAsyncCollector以驗證是否在您的catch塊中使用預期輸入調用了.AddAsync()方法:

[TestClass]
public class MyFirstAzureFunctionTests
{
    [TestMethod]
    public async Task GivenRabbitMQTrigger_WhenException_ThenInputEventAddedToOutputEventCollector()
    {
        // arrange
        var mockOutputQueue = new Mock<IAsyncCollector<string>>();
        var mockLogger = new Mock<ILogger>();

        var inputEvent = "foo";

        // act
        await MyFirstAzureFunction.Run(inputEvent, mockOutputQueue.Object, mockLogger.Object);

        // assert
        mockOutputQueue
            .Verify(x => x.AddAsync(It.Is<string>(s => s == inputEvent), It.IsAny<CancellationToken>()), Times.Once);
    }
}

我的示例使用 MS Test,但希望您能理解。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM