|
From: Jeff M. <je...@cu...> - 2003-07-17 14:05:47
|
That's amazing. I give up, i've had enough of the request, it's a really
bad API to start with. Might as well get rid of all the servlet mocks
and use the dynamic stuff.
On Thu, 2003-07-17 at 14:37, Bill Lynch wrote:
> Guys,
>
> I took Steve's advice and created my own extention to
> MockHttpServletRequest - my first attempt is below:
>
> private class MyMockHttpServletRequest extends MockHttpServletRequest {
>
> private Hashtable attributes;
>
> public JiveMockHttpServletRequest() {
> attributes = new Hashtable();
> }
>
> public Object getAttribute(String s) {
> return attributes.get(s);
> }
>
> public Enumeration getAttributeNames() {
> return attributes.elements();
> }
>
> public void setAttribute(String s, Object o) {
> attributes.put(s,o);
> }
> }
>
> After doing this and reading Jeff's mail I implemented it with a
> ReturnObjectBag - however, I don't see what that buys me:
>
> private class MyMockHttpServletRequest extends MockHttpServletRequest {
>
> private ReturnObjectBag attributes;
>
> public MyMockHttpServletRequest() {
> attributes = new ReturnObjectBag("attributes");
> }
>
> public Object getAttribute(String s) {
> return attributes.getHashTable().get(s);
> }
>
> public Enumeration getAttributeNames() {
> return attributes.getHashTable().elements();
> }
>
> public void setAttribute(String s, Object o) {
> attributes.getHashTable().put(s,o);
> }
> }
>
> Is there a benefit to either approach? Both work perfectly in my test
> case and I'm more inclined to go with the first approach just because
> it's simpler (and the ReturnObjectBag does nothing for me in this case).
>
> Cheers,
> --Bill
>
> Jeff Martin wrote:
> > Should probably be a ReturnObjectBag as this lets you setup a list of
> > return values for a key.
> >
> >
> > On Thu, 2003-07-17 at 08:47, Steve Freeman wrote:
> >
> >>This implementation /is/ a little hazy.
> >>
> >>The idea is that you should preload your attributes in the order in
> >>which they are requested, and then they'll just be returned as the code
> >>runs. It's not actually doing a lookup. Checking which attributes are
> >>asked for is actually a separate concept and handled by a different
> >>expectation. There are some arguments for doing this but it does look a
> >>little clumsy.
> >>
> >>If you don't like this, I suggest you replace this part of the mock
> >>request with an ExpectationMap which might be closer to the behaviour
> >>you want.
> >>
> >>S.
> >>
> >>Bill Lynch wrote:
> >>
> >>>All,
> >>>
> >>>I haven't been able to figure out how to set attributes in a
> >>>MockHttpServletRequest. I searched the mailing list archives for clues,
> >>>but didn't find any (and there's no javadocs for that class!).
> >>>
> >>>The method that looks like it might work only takes one param:
> >>>
> >>>request.setupGetAttribute(Object)
> >>>
> >>>I'd expect that to be
> >>>
> >>>request.setupGetAttribute(String, Object)
> >>>
> >>>I've also tried passing in a vector of name/value pairs to that method,
> >>>but when I call getAttribute(String) on that request object I get this
> >>>error:
> >>>
> >>>There was 1 failure:
> >>>1)
> >>>testGetAttribute(com.foo.util.MyTest)junit.framework.AssertionFailedError:
> >>>attributes has run out of objects.
> >>> at
> >>>com.mockobjects.ReturnObjectList.nextReturnObject(ReturnObjectList.java:61)
> >>> at
> >>>com.mockobjects.servlet.MockHttpServletRequest.getAttribute(MockHttpServletRequest.java:58)
>
>
>
> -------------------------------------------------------
> This SF.net email is sponsored by: VM Ware
> With VMware you can run multiple operating systems on a single machine.
> WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines at the
> same time. Free trial click here: http://www.vmware.com/wl/offer/345/0
> _______________________________________________
> Mockobjects-java-users mailing list
> Moc...@li...
> https://lists.sourceforge.net/lists/listinfo/mockobjects-java-users
--
Jeff Martin
Memetic Engineer
http://www.custommonkey.org/
|