SeamTest (Using Seam 2.1.1.GA) seems to throw away conversations when an action is invoked that either starts a pageflow (See my page on testing pageflows) or when that action returns a viewId:
/**
* Action that returns a view id
*/
public String someAction(){
return "/someViewId.xhtml";
}
And the corresponding test:
String cid = new FacesRequest("/somepage.xhtml") {
@Override
protected void invokeApplication(){
invokeAction("#{someComponent.someAction}");
// assertion succeeds
assert isLongRunningConversation();
}
}.run();
new FacesRequest("/firstpageinflow.xhtml", cid) {
@Override
protected void invokeApplication(){
// assertion will fail!
assert isLongRunningConversation();
}
}.run();
This makes it utterly impossible to properly write integration tests, since I can only test individual views but not the complete user interaction. Even worse, views that require certain preconditions (created by a previous user interaction and stored in the conversation context) thereby become untestable.
Is there any reason for this behavior? Is there any known workaround, or am I doing something completely wrong here? I'd be really grateful for help.
Cheers
Arno