Thanks, that works when I create a MockUserManagerImpl. import org.apache.tapestry5.ioc.ServiceBinder; import org.appfuse.service.UserManager;
public class MockTestModule { public static void bind(final ServiceBinder binder) { binder.bind(UserManager.class, MockUserManagerImpl.class); } } It'd be great if it was possible to use JMock, but no dice: import org.apache.tapestry5.ioc.ServiceBinder; import org.appfuse.service.UserManager; import org.jmock.Mockery; import org.jmock.integration.junit4.JUnit4Mockery; public class MockTestModule { static Mockery context = new JUnit4Mockery(); public static void bind(final ServiceBinder binder) { binder.bind(UserManager.class, context.mock(UserManager.class)); } } Of course, if I could get the ApplicationContext from my PageTester, that would also make things easier. Matt Mark Horn-2 wrote: > > We use tapestry-spring and use PageTester to test our pages and this > is how we get around the Spring injection. > > For testing we create a new AppModule (TestHarnessModule) that binds > some "dummy" classes for testing > > TestHarnessModule.java > > public static void bind(final ServiceBinder binder) { > binder.bind(IUserService.class,DummyUserService.class); > } > > Then we have an abstract Page test class that creates the PageTester > object and loads in the TestHarnessModule > > @Before > public void setUp() { > _pageTester = new > PageTester(appPackage,appName,"src/main/webapp",TestHarnessModule.class); > } > > works well for us. It does mean that we have created some 'dummy' > classes w/ test data in them. > > Hope that helps. > > -Mark > > On Wed, Dec 17, 2008 at 1:07 PM, mraible <m...@raibledesigns.com> wrote: >> >> I have tapestry-spring in my pom.xml and TapestrySpringFilter in my >> web.xml, >> but neither of those helps me with testing. The following test: >> >> @Test >> public void testListUsers() { >> String appPackage = "org.appfuse.web"; >> String appName = "App"; >> PageTester tester = new PageTester(appPackage, appName, >> "src/main/webapp"); >> Document doc = tester.renderPage("UserList"); >> assertNotNull(doc.getElementById("userList")); >> } >> >> Results in the following error: >> >> Caused by: java.lang.RuntimeException: Error obtaining injected value for >> field org.appfuse.web.pages.UserList.userManager: No service implements >> the >> interface org.appfuse.service.UserManager. >> at >> org.apache.tapestry5.internal.transform.InjectWorker.transform(InjectWorker.java:68) >> at >> $ComponentClassTransformWorker_11e45efc856.transform($ComponentClassTransformWorker_11e45efc856.java) >> at >> $ComponentClassTransformWorker_11e45efc84c.transform($ComponentClassTransformWorker_11e45efc84c.java) >> at >> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl.transformComponentClass(ComponentClassTransformerImpl.java:170) >> ... 53 more >> >> I was able to get it working by creating a >> src/test/**/services/SpringObjectProvider and >> src/test/**/services/TestModule. Is that the easiest way to populate >> @Inject >> dependencies from Spring when testing? >> >> If so, is it possible to get beans (or the ApplicationContext) in a test >> from the SpringObjectProvider? >> >> Also, I'd be interested in seeing an example where EasyMock or jMock is >> used >> to create the objects and set expectations. >> >> Thanks, >> >> Matt >> >> >> Olle Hallin wrote: >>> >>> Is there a problem using tapestry-spring.jar? >>> >>> Olle >>> >>> 2008/12/17 mraible <m...@raibledesigns.com> >>> >>>> >>>> Is the following still the best way to inject Spring beans into a page >>>> when >>>> testing? >>>> >>>> http://wiki.apache.org/tapestry/Tapestry5SpringIntegrationAlternative1 >>>> >>>> With Tapestry 4, I could populate a Map with with the bean name and a >>>> real >>>> (or mock) implementation and instantiate the page, then call methods >>>> accordingly. Is this possible with Tapestry 5 w/o creating a lot of >>>> infrastructure code (which the above seems to require)? >>>> >>>> Thanks, >>>> >>>> Matt >>>> -- >>>> View this message in context: >>>> http://www.nabble.com/-T5--Testing-Pages-with-injected-Spring-beans-tp21057429p21057429.html >>>> Sent from the Tapestry - User mailing list archive at Nabble.com. >>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >>>> For additional commands, e-mail: users-h...@tapestry.apache.org >>>> >>>> >>> >>> >>> -- >>> Olle Hallin >>> Senior Java Developer and Architect >>> olle.hal...@crisp.se >>> www.crisp.se >>> >>> >> >> -- >> View this message in context: >> http://www.nabble.com/-T5--Testing-Pages-with-injected-Spring-beans-tp21057429p21058304.html >> Sent from the Tapestry - User mailing list archive at Nabble.com. >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org >> For additional commands, e-mail: users-h...@tapestry.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org > For additional commands, e-mail: users-h...@tapestry.apache.org > > > -- View this message in context: http://www.nabble.com/-T5--Testing-Pages-with-injected-Spring-beans-tp21057429p21058779.html Sent from the Tapestry - User mailing list archive at Nabble.com. --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org For additional commands, e-mail: users-h...@tapestry.apache.org