Step parameters should be converted just before the step executes (not when the
scenario is parsed)
---------------------------------------------------------------------------------------------------
Key: JBEHAVE-244
URL: http://jira.codehaus.org/browse/JBEHAVE-244
Project: JBehave
Issue Type: Improvement
Components: Core
Affects Versions: 2.5
Reporter: Stephen Cresswell
Fix For: 2.6
Attachments: BaseSteps.groovy, LazyCandidateStep.groovy
I should be able to use a ParamaterConverter to retrieve an entity from the
database, e.g.
Given an employee called Bob
When I give Bob a pay rise of 10,000 pounds
Then Bob forgets about his embarrassing law suit
{code:title=EmployeeSteps.java|borderStyle=solid}
@Given("an employee called $name")
public void createEmployee(String name) {
new EmployeeBuilder().name(name).buildAndSave();
}
@When("I give $employee a pay rise of $amount pounds")
public void givePayRise(Employee employee, Integer amount) {
employee.increaseSalary(amount);
}
{code}
{code:title=EmployeeConverter.java|borderStyle=solid}
public class EmployeeConverter implements ParamterConverter {
EmployeeRepository repo;
public Object convertValue(String value, Type type) {
return repo.findByFirstName(value)
}
}{code}
The parameter converter would be simple to implement, but currently won't work
without shenanigans because the step arguments are converted when the step is
created, and all the steps in a scenario are created up front, before any of
them are executed. This means that at the time the parameter converter attempts
to retrieve the entity from the database it hasn't been created.
To get around the problem I've created a LazyCandidateStep class, which only
creates the Step in the perform or doNotPerform methods. This isn't ideals
however because I also have to override Steps.createCandidateStep. I've
attached my workaround as an example.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email