On 9/17/05, Gary VanMatre <[EMAIL PROTECTED]> wrote:
> 
> > On 9/17/05, Gary VanMatre wrote: 
> > > 
> > > I was thinking that it might be helpful to have some protected factory 
> 
> > > methods on the AbstractJsfTestCase for instantiating the environment 
> mock 
> > > objects like request, response, faces context, ... 
> > 
> > 
> > I can see why one might want to do that, if the default implementations 
> that 
> > AbstractJsfTestCase wires up are insufficient. I haven't found that to 
> be 
> > the case ... have you? If so, I would think we'd want to enhance the 
> > functionality of the framework's mock objects where appropriate, no 
> matter 
> > what we do about adding protected methods to the abstract test case 
> class. 
> > 
> 

As you might imagine, I'd much prefer making the test framework mock object 
implementations more suitable before encouraging users to do their own 
implementations. As such, it's going to take looking at each of your use 
cases below to see what we might be able to port into the general 
architecture, where we might just say "your test environment doesn't look 
enough like a webapp ... so change it!", and where we might say "we really 
need pluggable mock objects here."

The initial mock objects implemented (selfishly :-) only the stuff I needed 
to do the unit tests I was already building ... and you've probably seen me 
flesh out additional implementations on them as subsequently developed tests 
have needed more behavior. I would *much* rather see us evolve the test 
framework's mock objects to suit the needs of the developer creating unit 
tests, rather than force them to create their own subclasses.

I've had to change the behavior to getResource(String path) on the servlet 
> context for the clay config test case.
> 

Your changes look generally useful here. I admit that I was lazy 
implementing this part of the ServletContext contract :-). 

The remote usecase test cases also implement the response getWriter().
> 

That also seems like something worth generalizing into the standard mock 
objects.

The rolodex test case also extends the external context (This one is kind of 
> a kluge). 
> 

Yep, that is definitely a kludge :-). The design intent is that you'd call 
addRequestParameterMap() or setRequestParameterMap() yourself, after 
AbstractJsfTestCase did its initial wiring of the related objects, to 
configure what request parameter information will be exposed to your test 
case.

> This would be a place that you could override and provide your own mock 
> > > implementation for a test case and not have to try to hookup all the 
> > > references. 
> > 
> > 
> > My only concern is that having an application provide its own mock 
> objects, 
> > instead of using the ones provided by the test framework (which will 
> have 
> > presumably been tested fairly extensively due to wide use) would lead to 
> a 
> > potential for hidden bugs due to flaws in the application's mock object 
> > implementation classes. 
> > 
>  True, we don't want to have to write a test to test our test :-)
> 

+1. 

Gary
> 

Craig

Reply via email to