Adam Ralph

Software, tea, and snowboarding

New Background Attribute in xBehave.net 0.12.0

With the release of xBehave.net version 0.12.0, it is now possible to add background steps to features using the new [Background] attribute. E.g.

[Background]
public static void Background()
{
    "Given a customer named \"Dr. Bill\""
        .Given(() => Users.Save(new Customer
            { Name = "Dr. Bill", Password = "oranges" }))
        .Teardown(() => Users.Remove("Dr. Bill"));

    "And a blog named \"Expensive Therapy\" owned by \"Dr. Bill\""
        .And(() => Blogs.Save(new Blog
            { Name = "Expensive Therapy",
                Owner = Users.Get("Dr. Bill") }))
        .Teardown(() => Blogs.Remove("Expensive Therapy"));
}

Where a typical scenario may look something like:-

[Scenario]
public static void DoctorBillPostsToHisOwnBlog()
{
    "Given I am logged in as Dr. Bill"
        .Given(() => Site.Login("Dr. Bill", "oranges"));

    "When I try to post to \"Expensive Therapy\""
        .When(() => Blogs.Get("Expensive Therapy")
            .Post(new Article { Body = "This is a great blog!" }));

    "Then I should see \"Your article was published.\""
        .Then(() => Site.CurrentPage.Body
            .Should().Contain("Your article was published."));
}

View the full example.

This is functionally equivalent to the Gherkin Background keyword. The background steps are executed before each scenario.