2017-02-20 11 views
1

私は、java、thymeleaf、およびspringbootを使用してアプリケーションを持っています。 localhost:8080ユーザーは、2番目のページ "localhost:8080/getValues"にリダイレクトする値を入力する必要がありますインデックスページに依存するjunitテストを作成するにはどうすればよいですか?

期待値をテストするにはどうすればjunitテストを書くことができますか?現在のところ、私のテストは404ページが見つからないため、ユーザーがホームページに入力した値に依存しているためテストが行​​われています。

テスト

@Test 
public void test() throws Exception { 

    this.mockMvc.perform(get("/")) 
    .andExpect(status().isOk()) 
    .andExpect(view().name("index")) 
    .andDo(print()); 
    //test passes 
} 

@Test 
public void testVals() throws Exception { 

    this.mockMvc.perform(post("getValues")) 
     .andExpect(status().isNotFound()) //passes 
     .andExpect(model().attributeExists("webHist")); //fails //no modelandviewfound 

} 

コントローラ

@RequestMapping(value = "/", method = RequestMethod.GET) 
    public ModelAndView index(Locale locale) throws MalformedURLException { 
     ModelAndView model = new ModelAndView("index"); 

     return model; 
    } 

@RequestMapping(value = "/getValues", method = RequestMethod.POST) 
    public ModelAndView getValues(Info info) throws MalformedURLException { 

     ModelAndView model = new ModelAndView("getValues"); 
     model.addObject("userID", info.userID()); 

     Customer custinfo = index.readXML(info.userID()); 
     model.addObject("custinfo", custinfo); 

     model.addObject("webHist", Web_HistoryRepo.getAll(info.userID())); 

     return model; 
    } 
+0

コントローラの外観はいくつかのコードを表示できますか? – pezetem

+0

@pezetemコントローラを追加しました。このマルチページロジックをSPAにどのように変更することができますか教えてください。 SPAに変更すると依存関係がなくなります – Jesse

答えて

0

ユニットテストについて、あなたはあなたのユニットで)あなたは(コンテンツが欠落しているInfo info を送信していない、それが何かをすべきlike

this.mockMvc.perform(post("getValues")) 
     .contentType(MediaType.APPLICATION_JSON) 
     .content(INFO_IN_JSON_FORM) 
     .andExpect(status().isNotFound()) //passes 
     .andExpect(model().attributeExists("webHist")); 

まだ動作しない場合は、テストの最後に.andDo(print())を追加して、結果についての詳細をお知らせします。

次のように、@RestControllerで注釈が付けられている場合はコントローラ全体がどのように見えますか?そうでない場合は、@RequestBodyをgetValues()メソッドに追加して、InfoがJsonからマップされるようにしてください。

SPAに関してはModelAndViewではなくJsonレスポンスが返され、フロントエンドはそれを解釈します。

+0

.contentが機能しません。私はMediaTypeをインポートしようとしました。エラーが表示されます。 "APPLICATION_JSONは解決できないか、フィールドではありません" import org.springframework.http – Jesse

+0

コントローラに@Controllerの注釈があります。 ModelAndViewを使用しない場合プロセスとは何ですか?これをSPAに変換できるURLを私に提供できますか? – Jesse

+0

SPAについては、角度チュートリアル(https://angular.io/docs/ts/latest/tutorial/)を試してみることができます。あなたのコードでJSPを使用していると思いますが、SPAは使用できません。 – pezetem

関連する問題