2016-10-12 5 views
0

私はSpring MVCの新バージョンで、以下のようなシンプルなコントローラを設定しようとしていますが、テストするときにはそうです。私はここでSpring MVC InternalResourceViewResolver

javax.servlet.ServletException: Circular view path [index]: would dispatch back to the current handler URL [/index] again. Check your ViewResolver setup! (Hint: This may be the result of an unspecified view, due to default view name generation.) 

を得た私のWebConfig.javaコードです:ここでは

@Bean 
public ViewResolver viewResolver() { 

    InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
    resolver.setPrefix("/WEB-INF/views/"); 
    resolver.setSuffix(".jsp"); 

    return resolver; 
} 

は私IndexController.javaコードです:ここでは

@Controller 
@RequestMapping("/index") 

public class IndexController { 

@RequestMapping(method = RequestMethod.GET) 
public String index() { 

    return "index"; 
} 

}

は私のテスト金融商品取引法です:

public class TestIndexController { 

    @Test 
    public void testIndexController() throws Exception { 

    IndexController indexController = new IndexController(); 

    MockMvc mockMvc = standaloneSetup(indexController).build(); 

    mockMvc.perform(get("/index")).andExpect(view().name("index")); 
} 

}

私は( "/ index.jspの")を取得するには、Get( "/インデックス")を変更するたびに、私はテストに合格しました。しかし、私はそれを把握することはできません、あなたのテストのセットアップでは

+0

[Spring MVCテストで「円形ビューパス」例外を回避する方法](http://stackoverflow.com/questions/18813615/how-to-avoid-the-circular-view-path-exception)の可能な複製-with-spring-mvc-test) – jny

答えて

0

私を助けてください、あなたはテスト中Controllerのインスタンスを作成しますが、テスト用に作成されたコンテキストは、あなたのWebConfigの存在を認識しませんしたがって、ViewResolverのインスタンスはありません。ここで

は簡単な修正です:

public void testIndexController() throws Exception { 
    IndexController indexController = new IndexController(); 
    MockMvc mockMvc = standaloneSetup(indexController) 
        setViewResolvers((new WebConfig()).viewResolver()).build(); 
    mockMvc.perform(get("/index")).andExpect(view().name("index")); 
} 

あなたのテストクラスでWebConfigにアクセスさせたくない場合は、あなたもViewResolverの新しいインスタンスを作成し、mockMvcセットアップに追加することができます。

これが役に立ちます。