public void StaticFieldAssignmentIsFaked() { Replace.CallsTo(() => { StaticClass.StaticField = 0; }).With(() => { }); var code = new CodeUnderTest(); code.SetsStaticField(5678); Assert.AreNotEqual(5678, StaticClass.StaticField); }
public void StaticFieldAccessIsFaked() { Replace.CallsTo(() => StaticClass.StaticField).With(() => 99); var code = new CodeUnderTest(); var result = code.CallsStaticField(); Assert.AreEqual(99, result); }
public void OriginalStaticFieldAssignmentSucceeds() { Replace.CallsTo(() => { StaticClass.StaticField = 0; }).CallOriginal(); var code = new CodeUnderTest(); code.SetsStaticField(1234); Assert.AreEqual(1234, StaticClass.StaticField); }
public void CanInterceptSpecifiedMethods() { var spec = new TestSpecification(); spec.SpecifyInterceptors(new SpecificationRegistry()); var mocked = new CodeUnderTest(); var result = mocked.CallsStringReturnOneParameter(); Assert.AreEqual("|| Original method return value when passed '888'. ||", result); }
public void OriginalStaticFieldAccessSucceeds() { StaticClass.StaticField = 1234; Replace.CallsTo(() => StaticClass.StaticField).CallOriginal(); var code = new CodeUnderTest(); var result = code.CallsStaticField(); Assert.AreEqual(1234, result); }
public void CallIsReplaced() { var dummy = new MethodReplacement(); Action<string> replacement = s => dummy.Call("Intercepted."); InterceptorRegistry.AddInterceptor( new CompoundInterceptor(new AlwaysMatches(), new InsteadOfCall(() => replacement) )); var mocked = new CodeUnderTest(); mocked.CallsConsoleWriteLine(); Assert.AreEqual("Intercepted.", dummy.ReplacementArg1); }
public void ArgumentsAreReplaced() { Function<IList<object>, IList<object>> replace = args => new List<object> { 5555 }; InterceptorRegistry.AddInterceptor( new CompoundInterceptor(new AlwaysMatches(), new ReplaceArguments(() => replace), new InvokeOriginalCall() )); var mocked = new CodeUnderTest(); var result = mocked.CallsStringReturnOneParameter(); Assert.AreEqual("|| Original method return value when passed '5555'. ||", result); }
public void MethodWithMatchingOverloadIsIntercepted() { var dummy = new MethodReplacement(); Action<string> replacement = s => dummy.Call("Intercepted."); InterceptorRegistry.AddInterceptor( new CompoundInterceptor(new AllOverloadsMatch(VoidMethod.Of(Console.WriteLine)), new InvokeCallSafe(() => replacement) )); var mocked = new CodeUnderTest(); mocked.CallsConsoleWriteLineFormatStingOverload(); Assert.AreEqual("Intercepted.", dummy.ReplacementArg1); }
public void ArgumentsAreReplacedAndCallIsReplaced() { Function<int, string> replacementMethod = number => String.Format("Intercepted: {0}", number); Function<IList<object>, IList<object>> replaceArgs = args => new List<object> { 4444 }; var compoundInterceptor = new CompoundInterceptor(new AlwaysMatches(), new ReplaceArguments(() => replaceArgs), new InsteadOfCall(() => replacementMethod) ); InterceptorRegistry.AddInterceptor(compoundInterceptor); var mocked = new CodeUnderTest(); var result = mocked.CallsStringReturnOneParameter(); Assert.AreEqual("Intercepted: 4444", result); }
public void LogicIsInsertedAfter() { VoidAction<IInvocation> interceptor = i => { Console.WriteLine("AFTER " + i.OriginalCall.Method.Name); Console.WriteLine("METHOD RETURNED: {0}", i.Return); }; var compoundInterceptor = new CompoundInterceptor(new AlwaysMatches(), new AfterCall(() => interceptor)); InterceptorRegistry.AddInterceptor(compoundInterceptor); var mocked = new CodeUnderTest(); var result = mocked.CallsStringReturnOneParameter(); Assert.AreEqual("|| Original method return value when passed '999'. ||", result); }
public void ReturnValueIsIntercepted() { ReplaceReturnValue.ReturnValueReplacementFunction replace = o => "Replacement."; InterceptorRegistry.AddInterceptor( new CompoundInterceptor(new AlwaysMatches(), new InvokeOriginalCall(), new ReplaceReturnValue(replace)) ); var mock = new CodeUnderTest(); var returnValue = mock.CallsStringReturnNoParameters(); Assert.AreEqual("Replacement.", returnValue); }
public void OriginalArgumentIsCaptured() { string suppliedArgument = null; Action<string> replacement = s => suppliedArgument = s; InterceptorRegistry.AddInterceptor( new CompoundInterceptor(new AlwaysMatches(), new InsteadOfCall(() => replacement))); var mocked = new CodeUnderTest(); mocked.CallsConsoleWriteLine(); Assert.AreEqual("This should not appear.", suppliedArgument); }
public void MethodIsReplacedAndOriginalIsCalled() { VoidAction<IInvocation> interceptor = i => { var numberTimesTwo = (int)i.Arguments[0] * 2; var originalResult = i.OriginalCall.DynamicInvoke(numberTimesTwo); i.Return = String.Format("Intercepted: {0}", originalResult); }; var compoundInterceptor = new CompoundInterceptor( new AlwaysMatches(), new InvokeWithInvocation(() => interceptor) ); InterceptorRegistry.AddInterceptor(compoundInterceptor); var mocked = new CodeUnderTest(); var result = mocked.CallsStringReturnOneParameter(); Assert.AreEqual("Intercepted: || Original method return value when passed '1998'. ||", result); }