ContextListener
は、ServletContext
データベースに作業するためのオブジェクトを挿入しています。私はsetAttribute
に送信するためにDBJoint joint
を必要とするテストservletContext.setAttribute("db", joint);
についてはテストメソッド内で作成するオブジェクトをモックする方法は?
@WebListener
public class ContextListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
final ServletContext servletContext =
servletContextEvent.getServletContext();
final DBJoint joint = new DBJointHandler(
"database_scripts", "authentication_database");
servletContext.setAttribute("db", joint);
}
}
:そして、このDBJoint
オブジェクトは、テストの方法で作成します。
私のテスト:servletContext.setAttribute("db", joint);
ため
@Test
public void whenThen() {
final ServletContextEvent event = mock(ServletContextEvent.class);
final ServletContext context = mock(ServletContext.class);
when(event.getServletContext()).thenReturn(context);
final ContextListener listener = new ContextListener();
listener.contextInitialized(event);
DBJoint joint = ..?// how to mocking this?
verify(context).setAttribute("db", joint);
}
- テストは、おそらくですか?
- 答えが「はい」の場合、どうしますか。
ありがとうございます。
あなたはすでにこれらのクラスをモックする方法を知っていることを確認mockito使用して、おそらくテスト
servletContext.setAttribute("db", joint);
することができます。私はあなたが必要と思うのは、 'servletContext.setAttribute(" db "、joint);で' 'DBJointを取得する' org.mockito.ArgumentCaptor; 'です。 "ジョイント"オブジェクトを取得したら、それを確認することができます。この助けを願っています。 –はい、 'org.mockito.ArgumentCaptor'を見てください – liminal
あなたの態度に感謝の意を表します。そして私が他の質問で言いたかったことはうまく書かれていましたが、次回は質問メッセージを出す前に検索エンジンで例外メッセージを実行します。それはあなたに多くの時間を安全にすることができます。 – GhostCat