>I'm sorry, but that doesn't really make sense. There should be no way for
>receiver1 to receive an event before the triggering ack(). I'm sure
>there's another way, but we need to understand your >code better. Can you
>give us more detail?
>
>S.
So here is simple example:
I have two classes Sender and Receiver. They have references to each other
(Sender has reference to Receiver and vice versa).
And now Sender will "send" message to Receiver using Receiver's recv()
method. After that Receiver is calling ack() method on
Sender to acknowledge transmission. So now I want to prepare Expectations
section like this:
one (receiverMock1).recv("a"); inSequence(SenderSequence); //mock object
one (senderTest).ack("a"); inSequence(SenderSequence); //tested object
Here I am testing Sender class. I know I can create action and it should
look something like this:
one (receiverMock1).recv("a"); inSequence(SenderSequence);
will(callAckMethod(senderTest,"a"));
but next I am not testing calling ack() method in the sequence.
Here is whole code:
Unit test:
///////////////////////
package case1.test;
import
junit.framework.TestCase;
import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.Sequence;
import org.jmock.api.Action;
import org.jmock.lib.legacy.ClassImposteriser;
import case1.Receiver;
import case1.Sender;
import case1.action.CallBackAction;
public class SequenceAckTest extends TestCase {
public static Action callAckMethod(Sender sender, String msg) {
return new CallBackAction(sender,msg);
}
public void testSender() {
// set up
Mockery context = new Mockery() {{
setImposteriser(ClassImposteriser.INSTANCE);
}};
//neighbors
final Receiver receiverMock1 = context.mock(Receiver.class, "receiver1");
// test object initialization
Sender senderTest = new Sender(receiverMock1);
final Sequence SenderSequence = context.sequence("SenderSequence");
// expectations
context.checking(new Expectations() {{
one (receiverMock1).recv("a"); inSequence(SenderSequence);
//will(callAckMethod(senderTest,"a"));
one (senderTest).ack("a"); inSequence(SenderSequence); //ERROR this will
not compile
}});
// execute - start testing
senderTest.protocol();
context.assertIsSatisfied();
}
}
///////////////////////
Sender:
///////////////////////
package case1;
public class Sender{
private Receiver receiver1;
private void sendMessageA(){
receiver1.recv("a");
}
public Sender(Receiver rec1){
this.receiver1=rec1;
}
public void protocol(){
//sending message
sendMessageA();
}
public void ack(String msg){
System.out.println("Ack received: "+msg);
}
}
///////////////////////
Receiver:
///////////////////////
package case1;
public class Receiver {
private Sender sender;
public Receiver(Sender sender){
this.sender=sender;
}
public void recv(String msg){
System.out.println("Receiver: "+msg);
sender.ack(msg);
}
}
///////////////////////
Thanks for replying.
Regards,
Mac
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email