NSubstitute Introduction and Why I like itRecently I am heavily learning Test Driven Development and Domain Driven design. As you know With TDD you need to have a mocking libraries. So after doing on research on internet they are three libraries available in Microsoft.NET development world which are quite mature.
- Rhino Mocks
- NSubstitute
- Moq
I have gone through all of above three and then After doing research and I choose NSubstitute.
Why I Choose NSubstitute:
Following are the reasons why I have chosen NSubstitute.
- It is super easy to use. I don’t have to write very complex lamda expressions to mock objects.
- It works really fine with all framework of Test Driven Development
- As it is super easy to use you need to write very less code to mock objects.
- With other Visual Studio plugins like Resharper, Telerik Justcode its works perfectly and they are able to generate code for the same.
- It’s got fluent syntax and very easy to understand.
- It’s perfect for some one who is not mature enough for Test Driven Development.
NSubstitute - Basic Introduction:
NSubstitute is relatively a new kid on the block as compare to other two mocking libraries. It’s is a open source project hosted on github. You can find all the information related to NSubsitute via following site.
http://nsubstitute.github.io/
It’s also available on NuGet and You can install it via Nuget via following command.
So what’s we are waiting for Let’s create a demo application to see how it’s works. I am going to create a console application to demonstrate this.
I am also going to Add a Test Project to Run my test created with Help of NSubstitute.
Now I’m going to create person interface like below.
namespace NSubstituteBasicDemo
{
public interface IPerson
{
string GetFullName(string firstName,string lastName);
}
}
And same way I am going to create implementation of IPerson interface like below.
namespace NSubstituteBasicDemo
{
public class Person : IPerson
{
public string GetFullName(string firstName, string lastName)
{
return string.Format("{0} {1}", firstName, lastName);
}
}
}
Now it’s time to write Test and for that we need to add nuget package for NSubstitute in test project.
Once we are done I have written following code to write a test for Person class.
using Microsoft.VisualStudio.TestTools.UnitTesting;
using NSubstitute;
using NSubstituteBasicDemo;
namespace NSubstituteTest
{
[TestClass]
public class PersonTest
{
[TestMethod]
public void ToCheck_Whether_Person_FullName_Work_Or_Not()
{
//Creating Substiute for person
var person = Substitute.For<IPerson>();
//Adding a return value
person.GetFullName("Jalpesh", "Vadgama").Returns("Jalpesh Vadgama");
//Asserting to check whether its fine or not
Assert.AreEqual("Jalpesh Vadgama", person.GetFullName("Jalpesh", "Vadgama"));
}
}
}
Now when you run this Test it’s work perfectly.
That’s it. Hope you like it. Stay tuned for more.