我有一个用 Java 编写的 aws lambda RequestHandler,它调用另一个 aws lambda。为了调用另一个 lambda,我编写了一个接口(interface),其中的方法由 @LambdaFunction 注释。要构建调用程序,我使用:
LamdaInvoker lamdaInvoker = LambdaInvokerFactory.builder().lambdaClient(AWSLambdaClientBuilder.defaultClient()).build(LamdaInvoker.class);
当我在没有部署 lambda 的情况下运行 JUnit 测试时,我得到:
java.lang.IllegalArgumentException: No region provided
是否可以在单元测试中模拟调用者?如何模拟?
最佳答案
你可以在你的测试类中尝试类似的东西 -
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"
});
}
关于java - 如何对 aws lambda 调用进行单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42601164/