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





Reply via email to