From: Jeff M. <je...@mk...> - 2004-03-01 09:49:16
|
You should be using setupGetAttribute not setAttribute. Sorry about this the naming conventions in that area a bit inconsistent. On Fri, 2004-02-27 at 19:23, Charles Hayes wrote: > Hey gang, I'm new to MockObjects (and absolutely loving it!!!!). I > created a test class which tests a command class which has an execute > method that takes an HttpServletRequest object. So I mocked the request > and a session (since the command gets a QualityTemplateBuilder object > from the session) and I added an attribute called "currentTemplate" to > the request. > > However, when I run my test from ANT, the error message I see is as follows: > > [junit] Testcase: > testExecute(com.sun.es.acac.quality.UpdateItemsCommandTest): FAILED > [junit] attributes does not contain currentTemplate > [junit] junit.framework.AssertionFailedError: attributes does not > contain currentTemplate > > I'm attaching both the source file to be tested and the test class so > that someone can see if they see what I am doing wrong. > > Thanks for your support! > > Charles > > ______________________________________________________________________ > package com.sun.es.acac.quality; > > import junit.framework.*; > import com.mockobjects.servlet.MockHttpServletRequest; > import com.mockobjects.servlet.MockHttpSession; > import javax.servlet.http.*; > import java.util.Enumeration; > import java.util.ArrayList; > import java.util.LinkedHashMap; > import java.util.Iterator; > import java.util.Set; > > import com.sun.es.acac.ACACController; > import com.sun.es.common.CommandException; > > public class UpdateItemsCommandTest extends TestCase { > private QualityTemplateBuilder builder = null; > private MockHttpServletRequest request = null; > private MockHttpSession session = null; > > protected void setUp() throws Exception { > super.setUp(); > /**@todo verify the constructors*/ > builder = new QualityTemplateBuilder(); > } > > protected void tearDown() throws Exception { > builder = null; > super.tearDown(); > } > > public void testExecute() { > LinkedHashMap templateItemMap; > request = new MockHttpServletRequest(); > > /////////////////////////////////////////////////////////////// > // Build up a template builder object > builder = new QualityTemplateBuilder(); > builder.setTemplateID("1"); > builder.setCountry("1"); > builder.setGroup("1"); > // Create 2 categories > String [] catParams = {"1", "3"}; > request.setupAddParameter("listB", catParams); > builder.setCategories(request); > // Create 2 items for the first category > String[] items1 = {"1", "2"}; > request.setupAddParameter("listB", items1); > builder.setCategoryItems(request); > // Create 2 items for the second category > String[] items2 = {"10", "13"}; > request.setupAddParameter("listB", items2); > builder.setCategoryItems(request); > > ////////////////////////////////////////////////////////////// > // Add the builder to the HttpServletRequest > request.setAttribute("currentTemplate", builder); > > ////////////////////////////////////////////////////////////// > // Add the request to the session > MockHttpSession session = new MockHttpSession(); > request.setSession(session); > > UpdateItemsCommand command = new UpdateItemsCommand("Summary Screen"); > try { > String next = command.execute(request); > } catch(CommandException ce) { > System.out.println("CommandException thrown from UpdateItemsCommandTest.class"); > } > > } > > } > > ______________________________________________________________________ > /** > * $Log: UpdateItemsCommand.java,v $ > * Revision 1.1 2004/02/27 02:12:44 ch88251 > * Still working on updating quality templates. > * > */ > package com.sun.es.acac.quality; > > import javax.servlet.http.HttpServletRequest; > import javax.servlet.http.HttpSession; > > import com.sun.es.common.Command; > import com.sun.es.common.CommandException; > import com.sun.es.common.DBException; > > import java.util.logging.*; > import java.util.Enumeration; > > /** > * This class loads the existing quality items for a specific category > * into a QualityTemplateBuilder and then redirects the user to a view > * that allows the user to change the items. > */ > public class UpdateItemsCommand implements Command { > > private String next; // The next view to display > private QualityTemplateBuilder builder; > > private Logger log = Logger.getLogger(UpdateItemsCommand.class.getName()); > > /** > * This constructor instantiates a new command and receives information > * about which view to display after the command executes. > * @param next The next view to display > */ > public UpdateItemsCommand(String next) { > this.next = next; > } > > /** > * This method gets the template ID from the request and then > * tells the QualityTemplateBuilder to load all it's values for > * the given ID. > * @param request The request should contain the templateID so that > * we will know which quality template is being edited. > * @return Returns the next view to display > * @throws CommandException If the command is not recognized. > */ > public String execute(HttpServletRequest request) throws CommandException { > HttpSession session = request.getSession(true); > QualityTemplateBuilder builder = > (QualityTemplateBuilder)session.getAttribute("currentTemplate"); > > if (builder != null) { > QualityCategory currentCategory = builder.getCurrentCategory(); > builder.setCategoryItems(currentCategory, request); > } > return next; > } > > } -- jeff martin information technologist mkodo limited mobile: 44 (0) 78 5547 8331 phone: 44 (0) 20 2226 4545 email: je...@mk... www.mkodo.com |