org.jmock.lib.script
Class ScriptedAction

java.lang.Object
  extended by org.jmock.lib.script.ScriptedAction
All Implemented Interfaces:
SelfDescribing, Action, Invokable

public class ScriptedAction
extends Object
implements Action

An Action that executes a BeanShell script. This makes it easy to implement custom actions, especially those that call back to objects passed to the mocked method as parameters.

To use a scripted action in an expectation, statically import the perform method and call it within the will(...) clause of the expectation.

The script can refer to the parameters of the mocked method by the names $0 (the first parameter), $1, $2, etc, and to the mock object that has been invoked by the name $this. You can define other script variables by calling the action's where method.

For example:

 allowing (sheep).accept(with(a(Visitor.class))); 
     will(perform("$0.visitSheep($this)");
 

is equivalent to:

 allowing (sheep).accept(with(a(Visitor.class))); 
     will(perform("$0.visitSheep(s)").where("s", sheep);
 

Author:
nat

Constructor Summary
ScriptedAction(String expression)
           
 
Method Summary
 void describeTo(Description description)
           
 Object invoke(Invocation invocation)
          Performs an action in response to an invocation.
static ScriptedAction perform(String script)
          Creates an action that performs the given script.
 ScriptedAction where(String name, Object value)
          Defines a variable that can be referred to by the script.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ScriptedAction

public ScriptedAction(String expression)
Method Detail

invoke

public Object invoke(Invocation invocation)
              throws Throwable
Description copied from interface: Invokable
Performs an action in response to an invocation.

Specified by:
invoke in interface Invokable
Parameters:
invocation - The invocation to perform.
Returns:
The result of the invocation, if not throwing an exception. Must return null if the invoked method has a void return type.
Throws:
Throwable - An exception to be thrown to the caller, if not returning a value. Any checked exception thrown must be in the throws list of the invoked method.

describeTo

public void describeTo(Description description)
Specified by:
describeTo in interface SelfDescribing

perform

public static ScriptedAction perform(String script)
Creates an action that performs the given script.

Parameters:
script - a BeanShell script.
Returns:
the new action.

where

public ScriptedAction where(String name,
                            Object value)
Defines a variable that can be referred to by the script.

Parameters:
name - the name of the variable
value - the value of the variable
Returns:
the action, so that more variables can be defined if needed