Skip to content
michael-erasmus edited this page Aug 16, 2010 · 5 revisions

Welcome to the specr wiki!

Here is some quick examples of what you can do with specr.

Let’s say you have a class that you want to write some specifications for(Not really behavior-driven, I know, but bear with me, it’s only for illustration purposes):

public enum Gender {Male; Female;}
public class Person
{
    public string Name{get;set;}
    public bool IsOrphan{get;set;}
    public Person Father{get;set;}
    public Person Mother{get;set;}
    public Gender Sex{get;set;}
    public List<Person> Children{get;private set};  

    public Person HaveAChild(string name)
    {
         if(Children == null)
               Children = new List<Person>();

        var child = new Person{Name = name};
        Children.Add(child);
        return child;
    }
} 

Now lets write some specs:

[TestClass]
public class DescribePerson
{
    private Person person;
    [TestInitialize]
    public void Before()
    {
        person = new Person(){ IsOrphan =true, Sex = Gender.Male};              
    }

     [TestMethod]
     public void He_Should_Be_A_Nameless_Orphan()
     {
          person.Should().NotHaveA().Name();
          person.Should().BeAn().Orphan();
     }

     [TestMethod]
     public He_Should_Be_Able_To_Have_Children()
     {
          Person.Should().HaveNo().Children();
          var child = person.HaveAChild("Johnny");
          child.Should().HaveA().Father();
          person.Should().Have(1).Children();
     }
} 
Clone this wiki locally