繁体   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