Search code examples
specflowexpected-exception

How do I get SpecFlow to expect an exception?


I'm using SpecFlow, and I'd like to write a scenario such as the following:

Scenario: Pressing add with an empty stack throws an exception
    Given I have entered nothing into the calculator
    When I press add
    Then it should throw an exception

It's calculator.Add() that's going to throw an exception, so how do I handle this in the method marked [Then]?


Solution

  • Great question. I am neither a bdd or specflow expert, however, my first bit of advice would be to take a step back and assess your scenario.

    Do you really want to use the terms "throw" and "exception" in this spec? Keep in mind the idea with bdd is to use a ubiquitous language with the business. Ideally, they should be able to read these scenarios and interpret them.

    Consider changing your "then" phrase to include something like this:

    Scenario: Pressing add with an empty stack displays an error
        Given I have entered nothing into the calculator
        When I press add
        Then the user is presented with an error message
    

    The exception is still thrown in the background but the end result is a simple error message.

    Scott Bellware touches this concept in this Herding Code podcast: http://herdingcode.com/?p=176