These tests all pass:
[Test] [ExpectedException(typeof(AssertionException))] public void ThrowsAssertionExceptionForWrongArgument() { Expect.Call(() => Console.WriteLine("A specific string.")); StaticClass.CodeUnderTestThatCallsConsoleWriteLine(); Verify.AllExpectations(); } [Test] public void VerifiesCallWithoutActuallyPerformingTheCall() { Expect.Call(() => Console.WriteLine("You shouldn't see me.")); StaticClass.CodeUnderTestThatCallsConsoleWriteLine(); Verify.AllExpectations(); } [Test] public void PerformsAlternativeAction() { Expect.Call(() => Console.WriteLine("YOU SHOULDN'T SEE THIS")).IgnoreArguments() .Do(() => Console.WriteLine("You should see this instead.")); StaticClass.CodeUnderTestThatCallsConsoleWriteLine(); Verify.AllExpectations(); } [Test] public void IgnoresArguments() { Expect.Call(() => Console.WriteLine("")).IgnoreArguments(); StaticClass.CodeUnderTestThatCallsConsoleWriteLine(); Verify.AllExpectations(); } [Test] public void InterceptsBothCalls() { Expect.Call(() => Console.WriteLine("")).IgnoreArguments(); StaticClass.CallsConsoleWriteLineTwice(); Verify.AllExpectations(); } [Test] public void InterceptsOnlyOneOverload() { Expect.Call(() => Console.WriteLine("IGNORED")).IgnoreArguments(); StaticClass.CallsTwoOverloads(); Verify.AllExpectations(); }
Where StaticClass looks like this:
public static class StaticClass { public static void CodeUnderTestThatCallsConsoleWriteLine() { Console.WriteLine("You shouldn't see me."); } public static void CallsConsoleWriteLineTwice() { Console.WriteLine("You shouldn't see me."); Console.WriteLine("You shouldn't see me."); } public static void CallsTwoOverloads() { var characters = "You SHOULD see me.".ToCharArray(); Console.WriteLine("You shouldn't see me."); Console.WriteLine(characters); } }
And the console output as shown by ReSharper is this:
Comments