Yes I can. Thank you very much. Bernardo Oliveira Pinto Byclosure, Lda. Tel: 916310482 Mail: [email protected] Web: http://byclosure.com
On Mon, Feb 24, 2014 at 10:34 PM, Mauro Talevi <[email protected]>wrote: > It's a bug. The lifecycle phases should be applied before/after each > example scenario. > > Can you please raise a JIRA issue for this? > > On 24/02/2014 13:33, Bernardo Pinto wrote: > > I have the following story: > Meta: Story proof of concept > > Lifecycle: > Before: > Given I have a bank account > And my balance is 100 > > Scenario: Simple scenario > Meta: @simple > > When I withdraw 10 > Then my bank account balance should be 90 > > Scenario: Scenario with Examples > Meta: @examples > > When I add <value> > Then my bank account balance should be <balance> > > Examples: > |value|balance| > |30|130| > |50|150| > > Scenario: Scenario with data tables > Meta: @tables > > Given these people have bank accounts with balances: > |Name|balance| > |Person1|1000| > |Person2|500| > When I take all their money > Then my bank account balance should be 1600 > > And have this Step implementation class: > public class BankAccountSteps extends Embedder { > > private BankAccount ba; > private List<BankAccount> accounts = new ArrayList<BankAccount>(); > > @Given("I have a bank account") > public void I_have_a_bank_account(){ > this.ba = new BankAccount("Me"); > } > > @Given("my balance is $balance") > public void my_balance_is(int balance){ > ba.setBalance(balance); > } > > @When("I withdraw $value") > public void I_withdraw(int value){ > ba.withdraw(value); > } > > @Then("my bank account balance should be $balance") > @Alias("my bank account balance should be <balance>") > public void my_bank_account_balance_should_be(@Named("balance")int > balance){ > System.out.println(ba); > > Assert.assertEquals(balance, ba.getBalance()); > } > > @When("I add $value") > @Alias("I add <value>") > public void I_add(@Named("value")int value) { > ba.add(value); > } > > @Given("these people have bank accounts with balances: > $accountInfos") > public void > these_people_have_bank_accounts_with_balances(@Named("accountInfos")ExamplesTable > accountInfos) throws Throwable { > for(Map<String, String> ai : accountInfos.getRows()) { > final BankAccount b = new BankAccount(ai.get("Name")); > final int balance = Integer.parseInt(ai.get("balance")); > b.setBalance(balance); > accounts.add(b); > } > } > > @When("I take all their money") > public void I_take_all_their_money() { > for(BankAccount bankAccount : accounts) { > ba.add(bankAccount.balance); > } > } > > public static class BankAccount { > private int balance; > private final String name; > > public BankAccount(String name) { > this.name = name; > } > > public int getBalance() { > return this.balance; > } > public void setBalance(int balance) { > this.balance = balance; > } > > public void add(int v) { > this.balance += v; > } > > public void withdraw(int v) { > this.balance -= v; > } > } > } > > The second scenario (and only this one) is reusing the ba variable from > the first scenario (i.e. it's not running the Lifecycle > Before). > Is this a bug or a feature? > > > Bernardo Oliveira Pinto > Byclosure, Lda. > Mail: [email protected] > Web: http://byclosure.com > > >
