Here's a working example story showing how to use a context object to
share variables between steps:
https://github.com/jbehave/jbehave-core/blob/master/examples/core/src/main/java/org/jbehave/examples/core/stories/context.story
On 28/12/2013 17:26, louis gueye wrote:
Hi bernardo ,
Cucumber takes advantage of ruby which allows to store data in the World.
In jbehave you can also use a World/Context object if you use groovy.
But you'll be responsible for cleaning your context between scenarios.
A cleaner but more tedious way is to create a model for the scenario,
then inject the model in your steps with a container as Mauro stated.
The model is cleaned up for each scenario by the framework ensuring
the idempotence.
If you don't want to create yet another layer you can reuse your
dto/domain objects. There is a good chance that layer fits parts of
your need. You can then complete what's missing (UI domain for instance).
Good luck!
Cordialement/Regards,
Louis GUEYE
linkedin <http://fr.linkedin.com/in/louisgueye> | blog
<http://deepintojee.wordpress.com/> | twitter
<http://twitter.com/#%21/lgueye>
2013/12/26 Bernardo Pinto <[email protected]
<mailto:[email protected]>>
Thank you for your answer.
That was not quite what I was looking for.
Maybe with a use case would be better: imagine that you have a web
page with a form with 3 fields (A, B, C) and a table with columns
A, B and C, that correspond to the form fields. When you fill the
form and submit it, a line in the table is added, with the values
that you filled in the form.
Suppose I'm interested in testing this mechanism of submitting the
form and seeing the new values in the table. A possible scenario
could be:
Given I am in the table page
When I fill all the fields
And submit the form
Then I should see, in the table, a new line with the new values
For the sake of idempotence of the test, I generate random values
to fill the form.
So, in the "Then" step, I have to know what were the values
introduced in the "When I fill all the fields" step.
In cucumber, you can set 3 variables in the "World" object, each
one with the value of a field in the form. Then, I can use the
variables/values in the "Then" step of the scenario to make the
assertion. Also, I don't have to worry about these variables
passing to other scenarios, because they are "cleaned" (they are
removed from the "World" object) when the scenario ends.
How can I achieve this in JBehave?
Thank you in advance,
Bernardo Oliveira Pinto
On Mon, Dec 23, 2013 at 5:20 PM, Mauro Talevi
<[email protected] <mailto:[email protected]>>
wrote:
Hi,
if you want to share values between steps in different
classes, you can inject your own context class - a simple pojo
or some other API class - and autowire it using one of the DI
containers that are supported, Spring, Guice, Pico etc ... If
you declare this class as a singleton in the container (the
default in most containers), it'll allow you share its values.
I hope that helps. If it doesn't feel free to share your use
case and what you are trying to do via an example.
Cheers
On 23/12/2013 01:25, Bernardo Pinto wrote:
Hi,
I want to save the value of some variables from one step
to the following ones.
I found this thread on the subject:
http://www.mail-archive.com/[email protected]/msg00719.html.
What I wanted to know is if JBehave still does not have a
mechanism to store the state of a Scenario (as, for
example, Cucumber:
https://relishapp.com/cucumber/cucumber-tck/docs/world-or-context).
If this mechanism still does not exist, do you have any
suggestion about how should I do this?
Thank you in advance,
Bernardo Oliveira Pinto
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email