簡體   English   中英

如何為 Azure Function TimerTrigger 實現單元測試

[英]How to implement unit test for Azure Function TimerTrigger

有人可以幫助如何使用 JUnit/Mockito 為以下代碼編寫單元測試嗎?

    @FunctionName("nodeStats")
    public void nodeStats(@TimerTrigger(name = "nodeStatsTrigger", schedule = "0 */5 * * * *", dataType = "string") String timerInfo,
                          final ExecutionContext context) {
        getNodeStats();
    }

以下文檔可能會有所幫助:

https://code.visualstudio.com/docs/java/java-testing

https://docs.microsoft.com/en-us/azure/azure-functions/functions-add-output-binding-storage-queue-java#update-the-tests

創建 Java 函數應用程序時,會自動為 HTTP 觸發函數創建示例測試用例:

    @Test
public void testHttpTriggerJava() throws Exception {
    // Setup
    @SuppressWarnings("unchecked")
    final HttpRequestMessage<Optional<String>> req = mock(HttpRequestMessage.class);

    final Map<String, String> queryParams = new HashMap<>();
    queryParams.put("name", "Azure");
    doReturn(queryParams).when(req).getQueryParameters();

    final Optional<String> queryBody = Optional.empty();
    doReturn(queryBody).when(req).getBody();

    doAnswer(new Answer<HttpResponseMessage.Builder>() {
        @Override
        public HttpResponseMessage.Builder answer(InvocationOnMock invocation) {
            HttpStatus status = (HttpStatus) invocation.getArguments()[0];
            return new HttpResponseMessageMock.HttpResponseMessageBuilderMock().status(status);
        }
    }).when(req).createResponseBuilder(any(HttpStatus.class));

    final ExecutionContext context = mock(ExecutionContext.class);
    doReturn(Logger.getGlobal()).when(context).getLogger();

    // Invoke
    final HttpResponseMessage ret = new Function().run(req, context);

    // Verify
    assertEquals(ret.getStatus(), HttpStatus.OK);
}

暫無
暫無

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

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