## org.jmock.lib.script
Class ScriptedAction

    java.lang.Object
      org.jmock.lib.script.ScriptedAction

All Implemented Interfaces:
  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)

### 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