Spring WebFlow Unit Test에서 뷰 상태에 주어진 이름이 보이는 것을 어떻게 주장합니까?

StackOverflow https://stackoverflow.com/questions/798375

문제

스프링 웹 플로우를 개발하고 TDD를 사용하려고 노력하여 AbstractXmlflowExecutionTests를 확장했습니다. 나는 내가 생각했을 것이라고 주장하는 명백한 방법을 볼 수 없다.보기 상태는 주어진 이름과 관련된 견해를 가지고있다. 예를 들어,이 흐름 (발췌)이 주어지면 :

<?xml version="1.0" encoding="UTF-8"?>
<flow ...>
    ...
    <view-state id="foo" view="barView">
    </view-state>
</flow>

단위 테스트

public void testAssertFooStateHasBarView() {
    ...
    assertCurrentStateEquals("foo");
    assertTrue( getFlowDefinition().getState("confirmation").isViewState());
    // Surely there's an easier way...?
    ViewState viewState = (ViewState)getFlowDefinition().getState("foo");
    View view = viewState.getViewFactory().getView(new MockRequestContext());
    // yuck!
    assertTrue(view.toString().contains("barView"));
}

그 상태를 주장하는 더 간단한 방법이 있습니까? foo 견해가 있습니다 barView?

도움이 되었습니까?

해결책

당신은 이것을 사용할 수 있습니다 :

assertResponseWrittenEquals("barView", context);

어디에 context 너의 MockExternalContext.

이것이 어쨌든 항상 이것을 테스트하는 방법입니다.

다른 팁

실제로 이벤트 신호 이벤트 인 경우이 방법을 통해 ViewSelection을 받고 이름을 확인할 수 있습니다.

assertViewNameEquals("Your View Name", applicationView(viewSelection));

나머지 테스트 또는 웹 플로우를 사용하는 방법에 대해 말할 수는 없지만 왜 contains() 평등을 테스트하기 위해? 나는 당신이 "Barviewblah"의 견해를 시험에 맞추기를 원하지 않는다고 확신합니까?

assertEquals("barView", view.toString());
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top