ApplicationContext
我有一个 Springboot 应用程序,它根据用户传递的输入参数在运行时查找 bean 。对于这种方法,我正在尝试编写 Mockito 测试用例,但它不起作用并抛出 NullPointerException。
引导应用程序的类:
@SpringBootApplication
public class MyApplication {
private static ApplicationContext appContext;
public static void main(String[] args) {
appContext = SpringApplication.run(MyApplication.class, args);
}
public static ApplicationContext getApplicationContext() {
return appContext;
}
}
我试图为其编写测试用例的类:
@Service
public class Mailbox {
@Autowired
MailProcessor processor;
public void processUserInput(Envelope object) {
processor.setCommand(MyApplication.getApplicationContext().getBean(object.getAction(), Command.class));
processor.allocateEnvelopes(object);
}
}
我的测试用例如下:
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest
@ActiveProfiles("test")
public class MailboxTest {
@Mock
MailProcessor processor;
@InjectMocks
Mailbox mailbox;
@Test
public void testProcessUserInput() {
Envelope message = new Envelope();
message.setAction("userAction");
message.setValue("userInput");
doNothing().when(processor).setCommand(any());
doNothing().when(processor).allocateEnvelopes(any());
mailbox.processUserInput(message);
Mockito.verify(processor).allocateEnvelopes(any());
}
}
每当我运行测试用例时,它都会processor.setCommand(MyApplication.getApplicationContext().getBean(object.getAction(), Command.class));
在Mailbox
课堂上给出 NullPointerException。如何模拟 ApplicationContext 查找?我错过了任何嘲笑步骤吗?