public static void Main()
var usingClass = new UsingClass(null);
Console.WriteLine( usingClass.HelloWorld("yoYO"));
var usingClassMocked = new UsingClass(implementationCLass: new MockDoStuff());
Console.WriteLine(usingClassMocked.HelloWorld("my mock input"));
public interface IImplementStuff
string HelloWorld(string inputString);
private readonly IImplementStuff localImplementStuff;
public UsingClass(IImplementStuff implementationCLass = null)
this.localImplementStuff = implementationCLass ?? new DoStuff();
public string HelloWorld(string input)
return this.localImplementStuff.HelloWorld(input);
public class DoStuff : IImplementStuff
public string HelloWorld(string inputString)
return String.Format("Hello World input:{0}",inputString);
public class MockDoStuff : IImplementStuff
public string HelloWorld(string inputString)
return "This was totally Mocked";