2017-06-16 18 views
1

私はmockitoを使ってテストしようとしているコントローラクラスを持っています。MockitoとSpring MVCで落ちるJunitテストケース

@Controller 
public class LoginController { 
    final static Logger logger = Logger.getLogger(LoginController.class); 
    private StaffService staffService; 
    @Autowired 
    public LoginController(StaffService staffService) { 
     this.staffService = staffService; 
    } 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String showLoginPage(Model model) { 
     model.addAttribute("loginBean", new LoginBean()); 
     return "login"; 
    }} 

私のテストクラス下のショーである: -

@RunWith(MockitoJUnitRunner.class) 
public class LoginControllerTest { 
    private static MockMvc mockMvc; 
    @Mock 
    private static LoginController loginController; 

    @Before 
    public void setUp() { 
     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/"); 
     viewResolver.setSuffix(".jsp"); 
     mockMvc = MockMvcBuilders.standaloneSetup(loginController).setViewResolvers(viewResolver).build(); 
    } 

    @Test 
    public void testShowLoginPage() throws Exception { 
    loginController.showLoginPage(new ExtendedModelMap()); 
     mockMvc.perform(get("/")).andExpect(view().name("login")); 
    } 

} 

しかし、私は以下のエラーを取得していますテストクラスを実行しています。助けてください !

java.lang.AssertionError: View name expected:<login> but was:<> 
    at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:54) 
    at org.springframework.test.util.AssertionErrors.assertEquals(AssertionErrors.java:81) 
    at org.springframework.test.web.servlet.result.ViewResultMatchers$2.match(ViewResultMatchers.java:69) 
    at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:171) 
    at com.expensecalculator.controller.test.LoginControllerTest.testShowLoginPage(LoginControllerTest.java:38) 

答えて

2

これはおそらく、テストしようとしているコントローラを嘲笑しているためです。あなたが代わりにこれを試してみてください:

@RunWith(MockitoJUnitRunner.class) 
public class LoginControllerTest { 
    private MockMvc mockMvc; 
    private static LoginController loginController; 

    @Mock 
    private StaffService staffService; 

    @Before 
    public void setUp() { 
     loginController = new LoginController(staffService); 

     InternalResourceViewResolver viewResolver = new InternalResourceViewResolver(); 
     viewResolver.setPrefix("/WEB-INF/"); 
     viewResolver.setSuffix(".jsp"); 
     mockMvc = MockMvcBuilders.standaloneSetup(loginController).setViewResolvers(viewResolver).build(); 
    } 

     @Test 
     public void testShowLoginPage() throws Exception { 
     mockMvc.perform(get("/")).andExpect(view().name("login")); 
     } 
} 

Mockitoのモックは、すべてのメソッド呼び出しは、デフォルトの動作で置き換える必要があり、そうあなたのスタンドアロンの実装は、それだけで空の文字列を返すメソッドに到達したとき。

関連する問題