My New BDD Style

Posted by Liam McLennan on Geeks with Blogs See other posts from Geeks with Blogs or by Liam McLennan
Published on Tue, 16 Mar 2010 19:04:12 GMT Indexed on 2010/03/17 1:11 UTC
Read the original article Hit count: 570

Filed under:

I have made a change to my code-based BDD style. I start with a scenario such as:

Pre-Editing

* Given I am a book editor
* And some chapters are locked and some are not
* When I view the list of chapters for editing
* Then I should see some chapters are editable and are not locked
* And I should see some chapters are not editable and are locked

and I implement it using a modified SpecUnit base class as:

[Concern("Chapter Editing")]
    public class when_pre_editing_a_chapter : BaseSpec
    {
        private User i;
        // other context variables

        protected override void Given()
        {
            i_am_a_book_editor();
            some_chapters_are_locked_and_some_are_not();
        }

        protected override void Do()
        {
            i_view_the_list_of_chapters_for_editing();
        }

        private void i_am_a_book_editor()
        {
            i = new UserBuilder().WithUsername("me").WithRole(UserRole.BookEditor).Build();
        }

        private void some_chapters_are_locked_and_some_are_not()
        {
        }

        private void i_view_the_list_of_chapters_for_editing()
        {
        }

        [Observation]
        public void should_see_some_chapters_are_editable_and_are_not_locked()
        {
        }

        [Observation]
        public void should_see_some_chapters_are_not_editable_and_are_locked()
        {
        }
    }

and the output from the specunit report tool is:

Chapter Editing specifications    1 context, 2 specifications

Chapter Editing, when pre editing a chapter    2 specifications
  • should see some chapters are editable and are not locked
  • should see some chapters are not editable and are locked

The intent is to provide a clear mapping from story –> scenarios –> bdd tests.

© Geeks with Blogs or respective owner