Java 如何实现Azure函数TimerTrigger的单元测试
有人能帮助我们如何使用JUnit/Mockito为下面的代码编写单元测试吗Java 如何实现Azure函数TimerTrigger的单元测试,java,azure-functions,Java,Azure Functions,有人能帮助我们如何使用JUnit/Mockito为下面的代码编写单元测试吗 @FunctionName("nodeStats") public void nodeStats(@TimerTrigger(name = "nodeStatsTrigger", schedule = "0 */5 * * * *", dataType = "string") String timerInfo, final ExecutionContex
@FunctionName("nodeStats")
public void nodeStats(@TimerTrigger(name = "nodeStatsTrigger", schedule = "0 */5 * * * *", dataType = "string") String timerInfo,
final ExecutionContext context) {
getNodeStats();
}
以下文档可能会有所帮助: 创建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);
}
@测试
public void testHttpTriggerJava()引发异常{
//设置
@抑制警告(“未选中”)
最终HttpRequestMessage req=mock(HttpRequestMessage.class);
final Map queryParams=new HashMap();
queryParams.put(“名称”、“Azure”);
doReturn(queryParams).when(req).getQueryParameters();
final Optional queryBody=Optional.empty();
doReturn(queryBody).when(req).getBody();
doAnswer(新答案){
@凌驾
公共HttpResponseMessage.Builder应答(调用锁调用){
HttpStatus status=(HttpStatus)invocation.getArguments()[0];
返回新的HttpResponseMessageLock.HttpResponseMessageBuilderLock().status(状态);
}
}).when(req).createResponseBuilder(任意(HttpStatus.class));
final ExecutionContext=mock(ExecutionContext.class);
doReturn(Logger.getGlobal()).when(context.getLogger();
//援引
最终HttpResponseMessage ret=new Function().run(请求,上下文);
//核实
assertEquals(ret.getStatus(),HttpStatus.OK);
}