More Fluent Interfaces for NUnit.Behave


I have been enhancing the overall structure of NUnit.Behave to evolve to a more fluent interface.  The following is a working example of what I have come up with.

 

            Story("Account Holder withdraws cash")
                .As_a("savings account holder")
                .I_Want("to transfer money from my savings account")
                .So_That("I can get cash easily from an ATM")
                .Scenario("savings account is overdrawn")
                .Given("my savings account balance is", -20)
                .And("my cash account balance is", 10)
                .When("I transfer to cash account", 20)
                .Then("my savings account balance should be", -20)
                .And("my cash account balance should be", 10);

</div>

 In the test runner the following output appears.

Story: Account Holder withdraws cash
Narrative: As a savings account holder
    I want to transfer money from my savings account
    so that I can get cash easily from an ATM.

    Scenario: savings account is overdrawn
        Given my savings account balance is: -20 !PENDING Delegate IMPLEMENTATION!
        And my cash account balance is: 10 !PENDING Delegate IMPLEMENTATION!
        When I transfer to cash account: 20 !PENDING Delegate IMPLEMENTATION!
        Then my savings account balance should be: -20 !PENDING Delegate IMPLEMENTATION!
        And my cash account balance should be: 10 !PENDING Delegate IMPLEMENTATION!

Don’t worry I am working on “!PENDING” but I just needed something as placeholder for the time being.

I love this fluent interface approach though.  It really makes the code much more maintainable.

Introducing NUnit.Behave or insert what ever other catchy name