Arjan van Bentem created JBEHAVE-748:
----------------------------------------

             Summary: When @Named parameter matches name in Example table, it 
might be injected for steps that do not reference it
                 Key: JBEHAVE-748
                 URL: https://jira.codehaus.org/browse/JBEHAVE-748
             Project: JBehave
          Issue Type: Bug
          Components: Core
    Affects Versions: 3.5.4
         Environment: Windows 7, Java 6
            Reporter: Arjan van Bentem


When a step with @Named parameters is used in a scenario that uses an Example 
table for SOME of its steps, but for this specific step is given some explicit 
value, then IF the parameter name is not fully surrounded with whitespace AND 
it matches a name from the Examples table, then the given value is ignored. 
Instead, the value from the Examples table is injected.

If the parameter name is unrelated to anything in the Examples table, then all 
is fine, even when the parameter is not fully surrounded with whitespace.

(This is slightly related to http://jira.codehaus.org/browse/JBEHAVE-646)

For example, all fine:

{code}
@Given("I have <a> and <b>")
public void givenAAndB(@Named("a") String myA, @Named("b") String myB) {
    assertThat(myA).isEqualTo("this");
    assertThat(myB).isEqualTo("that");
}

@When("I do <a>")
public void whenIDoA(@Named("a") String myA) {
    assertThat(myA).isEqualTo("this");
}

@Then("I see <b>")
public void thenISeeB(@Named("b") String myB) {
    assertThat(myB).isEqualTo("that");
}

// $x not surrounded by all whitespace, but "x" NOT known in Examples table: 
all fine
@When("I did '$x'")
public void whenIDidX(@Named("x") String myX) {
    assertThat(myX).isEqualTo("foo");
}
{code}

...but wrong:

{code}
// $b not surrounded by all whitespace, and "b" also known in Examples table
@Then("I saw '$b'")
public void thenISawB(@Named("b") String myB) {
    // Will fail: is assigned "that" from Examples table instead
    assertThat(myB).isEqualTo("bar");
}
{code}

...when used with:

{code}
Given I have <a> and <b>
When I did 'foo'
And I do <a>
Then I see <b>
And I saw 'bar'


Examples:

|   a|   b|
|this|that|
{code}



--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://jira.codehaus.org/secure/ContactAdministrators!default.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


Reply via email to