2013-07-17 1 views
1

playframework 2.1에서 렌더링 된 뷰가 예상 한 동작인지 테스트 할 수 있습니까?Playframework 2.1에서 예상 렌더링 된 뷰에 대한 컨트롤러 동작 테스트

ASP.NET MVC 3에서 AssertViewRendered().ForView("view")은 정확히 테스트합니다. 우리 2.1 연극에서 할 수 있을까요? 방법? 내가 달성하고자하는 것의

아주 기본적인 MVC 3 예 :

// Given the action GetUsers that renders the view "Users", I would like to assert 
// this view as the one I expect and no other. 
public class UserController 
{ 
    public ActionResult Index() { 
     return View("Users"); 
    } 
} 

[Test] 
public void GetUsersRendersCorrectView() 
{ 
    // Setup 
    var userService = new Mock<UserService>(); 
    var userController = new UserController(userService.Object); 

    // Excercise 
    var result = userController.GetUsers(); 

    // Verify 
    result.AssertViewRendered().ForView("Users"); 
} 

감사합니다.

답변

1

플레이 뷰 렌더링 (템플릿 단순한 스칼라 함수 컴파일)만을 호출 방법이다.

"수동 작성"기능으로 뷰 렌더링을 구현하지 못하게하지 마십시오.

따라서 액션에 의해 반환 된 Result은 콘텐츠가 템플릿 또는 다른 것에서 온 것인지 여부를 알 수 없습니다. 그렇기 때문에 Play에서 달성하려는 주장은 불가능합니다.

0

잘 모르겠지만 컨트롤러와 렌더링 된 뷰를 렌더링 된 뷰에 예상 데이터가 포함되어 있다고 테스트하여 테스트 할 수 있다고 생각합니다. Playframework documentation 가입일

:

@Test 
public void callIndex() { 
    Result result = callAction(
     controllers.routes.ref.Application.index("Kiki") 
    ); 
    assertThat(status(result)).isEqualTo(OK); 
    assertThat(contentType(result)).isEqualTo("text/html"); 
    assertThat(charset(result)).isEqualTo("utf-8"); 
    assertThat(contentAsString(result)).contains("Hello Kitty"); 
} 
+0

감사합니다. nico_ekito가 대답했습니다.보기의 내용을 테스트하는 것에 대해 알고 있지만이 경우에 필요한 것은 아닙니다. 희망을 갖고 그것을 개선하는 예제를 개선 한 게시물을 편집했습니다. – Franco

+1

호출 된 뷰가 메소드이기 때문에 어떤 메소드가 호출되는지 알기가 어렵습니다. 어쩌면 조롱 프레임 워크를 사용하여 일부 동작을 확인할 수 있습니다 (http://mockito.googlecode.com/svn/branches/1.8.0/javadoc/org/mockito/Mockito.html#1). –

관련 문제