Hi,

Thanks for you quick reply.

Sorry, my fault, I must have deleted these while removing my sysouts for this post.

I have tried using these but unfortunately receive the same exception. I have also done several searches on google, which seems to suggest the exception is caused by the omission of the replay() method. However their inclusion doesn't seem to change anything.

My updated methods are:

public void setUp() {
   ...
   webRequest = createMock(WebRequest.class);
   expect(webRequest.getSession(true)).andReturn(webSession);
   replay();
   webSession = webRequest.getSession(true);
   verify();
   ...
 }

public void testGetSaving(Product product) {
   try
   {
     viewProductDetail.setProduct(product);
     expect(viewProductDetail.getSaving()).andReturn(saving);
     replay();
     saving = viewProductDetail.getSaving();
     verify();
     assertEquals(saving, 0.02);
   }
   catch(RuntimeException e){
     System.out.println(e.toString());
   }

Thanks for any help

Ray

Jesse Kuhnert wrote:
You still need to call the replay() / verify() easymock methods, which can
be examined further here:

http://easymock.org/EasyMock2_2_Documentation.html

I think getSession(boolean) also returns a value - so you'd have to define
what that return value is with a statement like:

expect(webRequest.getSession(true)).andReturn(session); (or andReturn(null)
) .

On 6/1/07, Ray McBride <[EMAIL PROTECTED]> wrote:

Hi All,

We have recently upgrading one of our apps to Tapestry 4.1 and I have
been asked to write some unit tests for the existing components.

I am new to Tapestry, TestNG and Easymock, so please bear with me.

I am trying to get the test to run through an if statement, but I keep
getting the following runtime exception:

java.lang.IllegalStateException: missing behavior definition for the
preceeding method call getSession(true)

The class for the component is as follows:

public abstract class ViewProductDetail extends BaseComponent
{
@InjectObject("infrastructure:request")
  public abstract WebRequest getRequest();
  public abstract void setRequest(WebRequest webRequest);

  @InjectState("visit")
  public abstract Visit getSession();

    public Double getSaving()
  {
    ...

      if(getRequest().getSession(false) != null)
      {
        Visit visit = getSession();
        String discountcode = visit.getDiscountCode();
        Double saving = new Double(rrp.getValue().doubleValue() -
                    price.getValue(discountcode).doubleValue());
        return saving;
      }
      else
      {
        ...
    }
  }

My Test class is as follows:

public class ViewProductDetailTest extends TestBase
{
  ...

  @BeforeClass
  public void setUp() {
    viewProductDetail = newInstance(ViewProductDetail.class);
    webRequest = createMock(WebRequest.class);
    webRequest.getSession(true);
    viewProductDetail.setRequest(webRequest);
  }

  @Test (dataProvider = "CreateProduct")
  public void testGetSaving(Product product) {
    try
    {
      viewProductDetail.setProduct(product);
      Double saving = viewProductDetail.getSaving();
      assertEquals(saving, 0.02);
    }
    catch(RuntimeException e){
      System.out.println(e.toString());
    }
}

I'm not sure to the best way to create a session so that my if statement
will be true. I'm trying to use webRequest.getSession(true), but  it
doesnt seem to work and I don't know if there is a better way or if I
have missed something.

Thanks for any help

Ray


______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]






______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email ______________________________________________________________________

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to