Closed ebtalley closed 10 years ago
Hi, which version of tapestry-cometd are you using?
<repository>
<id>tapestry-cometd</id>
<url>https://github.com/uklance/releases/raw/master</url>
</repository>
<dependency>
<groupId>org.lazan</groupId>
<artifactId>tapestry-cometd</artifactId>
<version>0.9.18</version>
<exclusions>
<exclusion>
<groupId>org.apache.tapestry</groupId>
<artifactId>tapestry-core</artifactId>
</exclusion>
</exclusions>
</dependency>
Regarding my exclusion of tapestry-core. I'm providing my own (almost) stock version of core. all tests pass so I consider it to be a drop in replacement.
It seems like the ServletContext
is null. My guess is that the PageTester
has not properly mocked ApplicationGlobals.getServletContext()
You might be able to quick fix this by calling ApplicationGlobals.storeServletContext(ServletContext)
with a mock ServletContext.
Please report back here with your findings so that I can close this bug and raise a jira agains tapestry-test if need be.
eg:
import org.mockito.Mockito.*;
ServletContext servletContext = Mockito.mock(ServletContext.class);
final Map<String, Object> attributes = new HashMap<String, Object>();
when(servletContext.getAttribute(anyString())).thenAnswer(new Answer() {
Object answer(InvocationOnMock invocation) {
return attributes.get((String) invocation.getArguments()[0]);
}
});
when(servletContext.setAttribute(anyString(), any())).thenAnswer(new Answer() {
Object answer(InvocationOnMock invocation) {
attributes.put((String) invocation.getArguments()[0], invocation.getArguments()[1]);
return null;
}
});
pageTester.getService(ApplicationGlobals.class).storeServletContext(servletContext);
Im using Appfuse-Tapestry 2.2.1 as the baseline system and have dropped the cometd dependency into maven even though I have integrated as of yet.
this is using the pagetester functionality from tapestry-test
Test:
relevant:
full stack: