繁体   English   中英

如何对AWS Lambda调用进行单元测试?

[英]How to unit test aws lambda invokation?

我有一个用Java编写的AWS Lambda RequestHandler,它调用了另一个AWS Lambda。 为了调用另一个lambda,我编写了一个接口,并带有@LambdaFunction注释的方法。 要构建调用程序,我使用:

LamdaInvoker lamdaInvoker = LambdaInvokerFactory.builder().lambdaClient(AWSLambdaClientBuilder.defaultClient()).build(LamdaInvoker.class);

在未部署lambda的情况下运行JUnit测试时,我得到:

java.lang.IllegalArgumentException: No region provided

是否可以在单元测试中模拟调用者,如何进行?

您可以在Test类中尝试执行以下操作:

private LambdaInvocationHandler handler;
private AWSLambda lambda;
private LambdaInvokerFactory factory;
private YourInterface invoker;

@Before
public void setup() {
    lambda = Mockito.mock(AWSLambda.class);
    factory = new LambdaInvokerFactory(lambda, null);
    invoker = factory.build(YourInterface.class);
    handler = (LambdaInvocationHandler) Proxy.getInvocationHandler(invoker);
}

您的界面假设是-

static interface YourInterface {
    @LambdaFunction
    void someMethod(String arg1);
}

您的测试方法可能是-

@Test
public void testSomeMethod() throws Exception {
    Method x = getMethod("someMethod", String.class);
    handler.validateInterfaceMethod(someMethod, new Object[] {
            "str"
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM