gpt4 book ai didi

java - 如何为Azure Function TimerTrigger实现单元测试

转载 作者:行者123 更新时间:2023-12-01 19:28:28 25 4
gpt4 key购买 nike

有人可以帮助如何使用 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://learn.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);
}

关于java - 如何为Azure Function TimerTrigger实现单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59284384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com