我通过使用无服务器框架部署的lambda函数配置了API网关.我已经在yaml文件中定义了一些queryStringParameters为true.但是,即使在URL中未传递Required(强制)queryStringParams,请求也会通过该服务.PFB类似的配置.
functions:
functionName:
name: serviceName
handler: handler.handle
events:
- http:
path: /path
method: get
request:
parameters:
querystrings:
param1: true
param2: true
似乎无服务器无法验证param1和param2是否作为queryString传递.我们应该有一个明确的请求验证器吗?是否可以使用无服务器?
我在为其编写测试的文件夹下有多个包。当作为类或从驻留包运行时,这些测试会通过。但是当我从整个文件夹运行它时,测试失败并出现mockito异常。例如,EmailHandlerTest 类单独通过,并且当作为“电子邮件”包中的包运行时也通过。但是,当我从 bff 文件夹中作为一个整体运行测试时,许多类都会抛出与mockito有关的错误。
错误:
java.lang.NullPointerException: Cannot invoke "[Ljava.lang.Class;.clone()" because "
<local2>.parameterTypes" is null
at java.base/java.lang.reflect.Method.getParameterTypes(Method.java:314)
at org.mockito.internal.creation.DelegatingMethod.<init>(DelegatingMethod.java:20)
at org.mockito.internal.invocation.DefaultInvocationFactory.createMockitoMethod(DefaultInvocationFactory.java:81)
at org.mockito.internal.invocation.DefaultInvocationFactory.createInvocation(DefaultInvocationFactory.java:60)
at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:83)
at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor.doIntercept(MockMethodInterceptor.java:56)
at org.mockito.internal.creation.bytebuddy.MockMethodInterceptor$DispatcherDefaultingToRealMethod.interceptAbstract(MockMethodInterceptor.java:161)
at com.<package>.bff.repository.EmailTemplateRepository$MockitoMock$520687419.findByEmailTemplateId(Unknown Source)
at <package>.bff.email.EmailHandlerTest.sendProjectCompletionMail_Should_Send_Email_Successfully(EmailHandlerTest.java:926)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:725)
at org.junit.jupiter.engine.execution.MethodInvocation.proceed(MethodInvocation.java:60)
at org.junit.jupiter.engine.execution.InvocationInterceptorChain$ValidatingInvocation.proceed(InvocationInterceptorChain.java:131)
at org.junit.jupiter.engine.extension.TimeoutExtension.intercept(TimeoutExtension.java:149)
at org.junit.jupiter.engine.extension.TimeoutExtension.interceptTestableMethod(TimeoutExtension.java:140)
Run Code Online (Sandbox Code Playgroud)
EmailHandlerTest 类中单个方法的代码。此类中还有许多其他类似的方法,但都因相同的错误而失败:
@ExtendWith(MockitoExtension.class)
@MockitoSettings(strictness = Strictness.LENIENT)
public class EmailHandlerTest {
@Mock private EmailTemplateRepository emailTemplateRepository;
<<Few Other Mocks here>>
@InjectMocks EmailHandler emailHandler;
@TempDir
Path reportDir;
private static TestUtils testUtils …Run Code Online (Sandbox Code Playgroud)