Recently 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.
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.
Once we are done I have written following code to write a test for Person class.
That’s it. Hope you like it. Stay tuned for more.
- Rhino Mocks
- NSubstitute
- Moq
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.
You can find complete source code of this blog post at -https://github.com/dotnetjalps/NSubstituteExamples
0 comments:
Post a Comment
Your feedback is very important to me. Please provide your feedback via putting comments.