2017-05-30 27 views
0

ダッシュレイヤーのオブジェクトを注入する方法を、mvcのコントローラに、ユニットテストにmockitoを使用する場合。 SpringJUnit4ClassRunnerクラスを使用する場合、常に@Spyアノテーションを持つnullポインタ例外を与えます。スプリングmvcユニットテストコントローラは、mockitoを使用してDAOオブジェクトを注入

サンプル・コード:このテストケースで

@RunWith(SpringJUnit4ClassRunner.class) 
@ContextConfiguration(locations = { "classpath:**/evivecare-application-context-test.xml" }) 
@WithMockUser(username = "admin", roles={"ADMIN"}) 
@TestExecutionListeners({DependencyInjectionTestExecutionListener.class}) 
public class ControllerTest { 

    private MockMvc mockMvc; 
    @Mock 
    private SessionFactory sessionFactory; 
    @Mock 
    private Session session; 
    @InjectMocks 
    private FilterController filterController = new FilterController(); 
    @Spy 
    private FilterService filterService= new FilterServiceImpl(); 
    @Autowired 
    private FilterDAO filterDAO; 
    @Mock 
    private OperatorService userService; 
    @Mock 
    private EviveSpeechFilterService eviveSpeechFilterService; 
    private TestContextManager testContextManager; 



    @Before 
    public void setup() throws Exception { 
     // Process mock annotations 
     MockitoAnnotations.initMocks(this); 

     // Setup Spring test in standalone mode 
     this.mockMvc = MockMvcBuilders.standaloneSetup(filterController).build(); 
     testContextManager = new TestContextManager(getClass()); 
     testContextManager.prepareTestInstance(this); 

     filterDAO= new FilterDAOImpl(sessionFactory); 
     Mockito.doReturn(session).when(sessionFactory).getCurrentSession(); 
    } 

@Test 
    public void testController200() throws Exception{ 
     Mockito.when(filterService.renameList("123","sdfgh")).thenReturn(false); 
     Mockito.when(filterDAO.renameList("123","sdfgh")).thenReturn(false); 
     this.mockMvc.perform(org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post("/renameList") 
       .sessionAttr("filterService", filterService) 
       .sessionAttr("filterDAO", filterDAO) 
       .param("listId", "1234567") 
       .param("alternateName", "LIst Name")) 
     .andExpect(org.springframework.test.web.servlet.result.MockMvcResultMatchers.status().isOk()); 
    } 
} 

は、順番にfilterServiceは常にnull pointer exceptionを返してfilterDAOを呼び出します。 この問題を解決するにはどうすればよいですか?

+0

は、いくつかのコードサンプルを投稿してください。また、なぜあなたは@Mockではなく@Spyを使用していますか? –

+0

@SergheyBishyr添付のコードをご確認ください –

答えて

関連する問題