Spring WebFlow Unit Test에서 뷰 상태에 주어진 이름이 보이는 것을 어떻게 주장합니까?
-
18-09-2019 - |
문제
스프링 웹 플로우를 개발하고 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());
제휴하지 않습니다 StackOverflow