我想测试类似Example
的类,该类处理ContextRefreshedEvent
并在处理程序方法中连接到服务器:
public class Example {
@EventListener
public void onApplicationEvent(ContextRefreshedEvent event) {
startWebSocketConnection();
}
// ...
}
但是在集成测试中,应用程序上下文是在Web套接字服务器启动并运行之前构建的,因此我得到一个异常,说明连接失败(在这种情况下为java.net.ConnectException: Connection refused: no further information
)。
测试如下:
@ExtendWith(SpringExtension.class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
public class WebSocketDataSourceTest {
@Autowired
private Example example;
@Autowired
private WebSocketServer server; // created too late
// ...
}
是否可以抑制ContextRefreshedEvent
或推迟应用程序上下文的创建,以便Web套接字服务器可以在之前启动?还是有其他解决方案?
答案 0 :(得分:1)
似乎没有办法抑制Spring框架触发的事件或推迟应用程序上下文的创建。所以我想出了以下解决方法:
tables
测试手动触发事件处理程序。
ar_1.forEach((findNum) => {
const foundTable = tables.find(([num]) => num === findNum);
div.append(
'<img src="xxx"><span>' + foundTable[1] + '</span>'
)
});