Skip to content

vzakanj/SpecFlow.Assist.Dynamic

 
 

Repository files navigation

SpecFlow.Assist.Dynamic

SpecFlow.Assist.Dynamic is a couple of simple extension methods for the SpecFlow Table object that helps you to write less code.

What would you rather write? This:

[Binding]
public class StepsUsingStaticType
{
    private Person _person;

    [Given(@"I create an instance from this table")]
    public void GivenICreateAnInstanceFromThisTable(Table table)
    {
        _person = table.CreateInstance<Person>();
    }

    [Then(@"the Name property on Person should equal '(.*)'")]
    public void PersonNameShouldBe(string expectedValue)
    {
        Assert.AreEqual(expectedValue, _person.Name);
    }
}

And then make sure to not forget defining a separate Person class for testing, since you don't want to reuse the one your system under test is using - that's bad practice.

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public DateTime BirthDate { get; set; }
    public double LengthInMeters { get; set; }
}

Or this:

[Binding]
public class StepsUsingDynamic
{
    private dynamic _instance;

    [Given(@"I create a dynamic instance from this table using step argument transformation")]
    public void c(dynamic instance) { _instance = instance; }

    [Then(@"the Name property should equal '(.*)'")]
    public void NameShouldBe(string expectedValue)
    {
        Assert.AreEqual(expectedValue, _instance.Name);
    }
}

The later version uses SpecFlow.Assist.Dynamic. Shorter, sweater and more fun!

Full documentation at: https://github.com/marcusoftnet/SpecFlow.Assist.Dynamic/wiki/Documentation

About

Extension methods to create dynamic objects from SpecFlow tables

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C# 65.4%
  • Gherkin 34.4%
  • Batchfile 0.2%