Package org.jmock.lib.script
Class ScriptedAction
java.lang.Object
org.jmock.lib.script.ScriptedAction
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);
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate void
defineParameters
(bsh.Interpreter interpreter, Invocation invocation) void
describeTo
(org.hamcrest.Description description) invoke
(Invocation invocation) Performs an action in response to an invocation.static ScriptedAction
Creates an action that performs the given script.Defines a variable that can be referred to by the script.
-
Field Details
-
interpreter
private final bsh.Interpreter interpreter -
script
-
-
Constructor Details
-
ScriptedAction
-
-
Method Details
-
invoke
Description copied from interface:Invokable
Performs an action in response to an invocation.- Specified by:
invoke
in interfaceInvokable
- 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 thethrows
list of the invoked method.
-
defineParameters
private void defineParameters(bsh.Interpreter interpreter, Invocation invocation) throws bsh.EvalError - Throws:
bsh.EvalError
-
describeTo
public void describeTo(org.hamcrest.Description description) - Specified by:
describeTo
in interfaceorg.hamcrest.SelfDescribing
-
perform
Creates an action that performs the given script.- Parameters:
script
- a BeanShell script.- Returns:
- the new action.
-
where
Defines a variable that can be referred to by the script.- Parameters:
name
- the name of the variablevalue
- the value of the variable- Returns:
- the action, so that more variables can be defined if needed
-