Best JustMockLite code snippet using Telerik.JustMock.Core.Behaviors.RecursiveMockingBehavior
MocksRepository.cs
Source:MocksRepository.cs  
...1390                    behaviorsToExecute.AddRange(1391                        mock.FallbackBehaviors.Where(1392                            behavior =>1393                                behavior is CallOriginalBehavior1394                                || (behavior is RecursiveMockingBehavior && ((RecursiveMockingBehavior)behavior).Type != RecursiveMockingBehaviorType.OnlyDuringAnalysis)));1395                }1396#endif1397            }1398            return behaviorsToExecute;1399        }1400        private static List<Type> GetBehaviorTypesToSkip(Invocation invocation)1401        {1402            var behaviorTypesToSkip = new List<Type>();1403            if (invocation.InAssertSet)1404            {1405                behaviorTypesToSkip.Add(typeof(InvocationOccurrenceBehavior));1406            }1407            return behaviorTypesToSkip;1408        }...MockCreationSettings.cs
Source:MockCreationSettings.cs  
...90                case Behavior.Loose:91                    fallbackBehaviors.Add(eventStubs);92                    fallbackBehaviors.Add(new PropertyStubsBehavior());93                    fallbackBehaviors.Add(new CallOriginalObjectMethodsBehavior());94                    fallbackBehaviors.Add(new RecursiveMockingBehavior(behavior == Behavior.RecursiveLoose95                        ? RecursiveMockingBehaviorType.ReturnMock : RecursiveMockingBehaviorType.ReturnDefault));96                    fallbackBehaviors.Add(new StaticConstructorMockBehavior());97                    fallbackBehaviors.Add(new ExecuteConstructorBehavior());98                    break;99                case Behavior.Strict:100                    fallbackBehaviors.Add(eventStubs);101                    fallbackBehaviors.Add(new RecursiveMockingBehavior(RecursiveMockingBehaviorType.OnlyDuringAnalysis));102                    fallbackBehaviors.Add(new StaticConstructorMockBehavior());103                    fallbackBehaviors.Add(new ExecuteConstructorBehavior());104                    fallbackBehaviors.Add(new StrictBehavior(throwOnlyOnValueReturningMethods: false));105                    supplementaryBehaviors.Add(new StrictBehavior(throwOnlyOnValueReturningMethods: true));106                    break;107                case Behavior.CallOriginal:108                    fallbackBehaviors.Add(new CallOriginalBehavior());109                    fallbackBehaviors.Add(eventStubs);110                    fallbackBehaviors.Add(new RecursiveMockingBehavior(RecursiveMockingBehaviorType.OnlyDuringAnalysis));111                    fallbackBehaviors.Add(new StaticConstructorMockBehavior());112                    fallbackBehaviors.Add(new ExecuteConstructorBehavior());113                    break;114            }115            if (!mockConstructorCall.HasValue)116            {117                switch (behavior)118                {119                    case Behavior.RecursiveLoose:120                    case Behavior.Loose:121                    case Behavior.Strict:122                        mockConstructorCall = constructorArgs == null;123                        break;124                    case Behavior.CallOriginal:...RecursiveMockingBehavior.cs
Source:RecursiveMockingBehavior.cs  
...21using System.Threading.Tasks;22using Telerik.JustMock.Core.Context;23namespace Telerik.JustMock.Core.Behaviors24{25	internal enum RecursiveMockingBehaviorType26	{27		OnlyDuringAnalysis,28		ReturnDefault,29		ReturnMock,30	}31	internal class RecursiveMockingBehavior : IBehavior32	{33		private readonly Dictionary<MethodBase, List<KeyValuePair<object, object>>> mocks34			= new Dictionary<MethodBase, List<KeyValuePair<object, object>>>();35		private readonly RecursiveMockingBehaviorType type;36		public RecursiveMockingBehavior(RecursiveMockingBehaviorType type)37		{38			this.type = type;39		}40		public RecursiveMockingBehaviorType Type { get { return type; } }41		public void Process(Invocation invocation)42		{43			if (invocation.IsReturnValueSet)44				return;45			var returnType = invocation.Method.GetReturnType();46			if (returnType == typeof(void) || returnType.IsValueType)47				return;48			if (invocation.Method.Name == "ToString"49				&& invocation.Method.GetParameters().Length == 050				&& invocation.UserProvidedImplementation)51				return;52			if (invocation.Method.Name == "GetType"53				&& invocation.Method.GetReturnType() == typeof(Type)54				&& invocation.Method.GetParameters().Length == 0)55				return;56			object mock = null;57			List<KeyValuePair<object, object>> mocksList;58			if (mocks.TryGetValue(invocation.Method, out mocksList))59			{60				// can't put the key part in a Dictionary,61				// because we can't be sure that GetHashCode() works62				mock = mocksList.FirstOrDefault(kvp => Equals(kvp.Key, invocation.Instance)).Value;63			}64			if (mock == null)65			{66				var parentMock = invocation.MockMixin;67				var repository = parentMock.Repository;68				if (MustReturnMock(invocation) || this.type == RecursiveMockingBehaviorType.ReturnDefault)69				{70					mock = CreateMock(returnType, repository, invocation);71				}72				if (mock == null)73					return;74				if (mocksList == null)75				{76					mocksList = new List<KeyValuePair<object, object>>();77					mocks.Add(invocation.Method, mocksList);78				}79				mocksList.Add(new KeyValuePair<object, object>(invocation.Instance, mock));80				var mockMixin = MocksRepository.GetMockMixin(mock, null);81				if (parentMock != null && mockMixin != null)82					parentMock.DependentMocks.Add(mock);83			}84			invocation.ReturnValue = mock;85			invocation.CallOriginal = false;86			invocation.UserProvidedImplementation = true;87		}88		private bool MustReturnMock(Invocation invocation, bool checkPropertyOnTestFixture = false)89		{90			if (checkPropertyOnTestFixture)91			{92#if !LITE_EDITION93				var stackTrace = new StackTrace();94				var methodCallingArrange = stackTrace.EnumerateFrames()95					.SkipWhile(m => !Attribute.IsDefined(m, typeof(ArrangeMethodAttribute)))96					.SkipWhile(m => m.Module.Assembly == typeof(MocksRepository).Assembly)97					.FirstOrDefault();98				if (methodCallingArrange != null && invocation.Method.DeclaringType.IsAssignableFrom(methodCallingArrange.DeclaringType))99					return false;100#endif101			}102			// mock invocations in static constructors according to the behavior103			if (invocation.InRunClassConstructor)104			{105				return invocation.InArrange && !invocation.CallOriginal;106			}107			return invocation.InArrange && !invocation.InArrangeArgMatching || this.type == RecursiveMockingBehaviorType.ReturnMock;108		}109		private object CreateMock(Type returnType, MocksRepository repository, Invocation invocation)110		{111			var parentMock = invocation.MockMixin;112			var replicator = parentMock as IMockReplicator;113			object mock = null;114			if (returnType.IsArray)115			{116				mock = Array.CreateInstance(returnType.GetElementType(), Enumerable.Repeat(0, returnType.GetArrayRank()).ToArray());117			}118			var idictionaryType = returnType.GetImplementationOfGenericInterface(typeof(IDictionary<,>));119			if (mock == null && idictionaryType != null)120			{121				var dictType = typeof(Dictionary<,>).MakeGenericType(idictionaryType.GetGenericArguments());...RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock.Core.Behaviors;2using Telerik.JustMock;3using Telerik.JustMock.Helpers;4{5    {6        public int TestMethod()7        {8            MockingContext mockingContext = new MockingContext();9            mockingContext.RecursionBehavior = new RecursiveMockingBehavior();10            var mock = Mock.Create<IClass1>();11            Mock.Arrange(() => mock.TestMethod()).Returns(1);12            var result = mock.TestMethod();13            Assert.AreEqual(1, result);14            return result;15        }16    }17    {18        int TestMethod();19    }20}RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Core.Behaviors;3using System;4using System.Collections.Generic;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9    {10        public virtual int Add(int a, int b)11        {12            return a + b;13        }14    }15    {16        public virtual int Add(int a, int b)17        {18            return a + b;19        }20    }21    {22        public virtual int Add(int a, int b)23        {24            return a + b;25        }26    }27    {28        public virtual int Add(int a, int b)29        {30            return a + b;31        }32    }33    {34        public virtual int Add(int a, int b)35        {36            return a + b;37        }38    }39    {40        public virtual int Add(int a, int b)41        {42            return a + b;43        }44    }45    {46        public virtual int Add(int a, int b)47        {48            return a + b;49        }50    }51    {52        public virtual int Add(int a, int b)53        {54            return a + b;55        }56    }57    {58        public virtual int Add(int a, int b)59        {60            return a + b;61        }62    }63    {64        public virtual int Add(int a, int b)65        {66            return a + b;67        }68    }69    {70        public virtual int Add(int a, int b)71        {72            return a + b;73        }74    }75    {76        public virtual int Add(int a, int b)77        {78            return a + b;79        }80    }81    {82        public virtual int Add(int a, int b)83        {84            return a + b;85        }86    }87    {88        public virtual int Add(int a, int b)89        {90            return a + b;91        }92    }93    {94        public virtual int Add(int a, int b)RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Helpers;3{4    {5        public static void Main(string[] args)6        {7            var mock = Mock.Create<IFoo>();8            Mock.Arrange(() => mock.DoSomething(1)).Returns(2).MustBeCalled();9            Mock.Arrange(() => mock.DoSomething(2)).Returns(3).MustBeCalled();10            Mock.Arrange(() => mock.DoSomething(Arg.AnyInt)).CallOriginal();11            var actual = mock.DoSomething(1);12            Mock.Assert(mock);13            Console.WriteLine(actual);14        }15    }16    {17        int DoSomething(int a);18    }19}20using Telerik.JustMock;21using Telerik.JustMock.Helpers;22{23    {24        public static void Main(string[] args)25        {26            var mock = Mock.Create<IFoo>();27            Mock.Arrange(() => mock.DoSomething(1)).Returns(2).MustBeCalled();28            Mock.Arrange(() => mock.DoSomething(2)).Returns(3).MustBeCalled();29            Mock.Arrange(() => mock.DoSomething(Arg.AnyInt)).CallOriginal();30            var actual = mock.DoSomething(1);31            Mock.Assert(mock);32            Console.WriteLine(actual);33        }34    }35    {36        int DoSomething(int a);37    }38}39public delegate int Foo(int a);40public int DoSomething(Foo foo)41{42    return foo(2);43}44var mock = Mock.Create<IFoo>();45Mock.Arrange(() => mock.DoSomething(ArgRecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock.Core.Behaviors;2{3    {4        public bool TryExecute(IMock mock, IMocked mocked, IInvocation invocation)5        {6            if (invocation.Method.IsAbstract || invocation.Method.IsVirtual)7            {8                var mockBehavior = MockingBehavior.Recursive;9                var mockInstance = Mock.Create(invocation.Method.ReturnType, mockBehavior);10                invocation.ReturnValue = mockInstance;11                return true;12            }13            return false;14        }15    }16}17using Telerik.JustMock.Core.Behaviors;18{19    {20        public bool TryExecute(IMock mock, IMocked mocked, IInvocation invocation)21        {22            if (invocation.Method.IsAbstract || invocation.Method.IsVirtual)23            {24                var mockBehavior = MockingBehavior.Recursive;25                var mockInstance = Mock.Create(invocation.Method.ReturnType, mockBehavior);26                invocation.ReturnValue = mockInstance;27                return true;28            }29            return false;30        }31    }32}33using Telerik.JustMock.Core.Behaviors;34{35    {36        public bool TryExecute(IMock mock, IMocked mocked, IInvocation invocation)37        {38            if (invocation.Method.IsAbstract || invocation.Method.IsVirtual)39            {40                var mockBehavior = MockingBehavior.Recursive;41                var mockInstance = Mock.Create(invocation.Method.ReturnType, mockBehavior);42                invocation.ReturnValue = mockInstance;43                return true;44            }45            return false;46        }47    }48}49using Telerik.JustMock.Core.Behaviors;50{51    {52        public bool TryExecute(IMock mock, IMocked mocked, IInvocation invocation)53        {54            if (invocation.Method.IsAbstract || invocation.Method.IsVirtual)55            {RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Core;3using Telerik.JustMock.Helpers;4using Telerik.JustMock.Expectations.Abstraction;5{6    {7        public object Execute(Invocation invocation)8        {9            var method = invocation.Method;10            var genericMethod = method.GetGenericMethodDefinition();11            var genericArguments = method.GetGenericArguments();12            var genericMethodDefinition = genericMethod.MakeGenericMethod(genericArguments);13            var mock = Mock.Create(genericMethodDefinition.DeclaringType, genericMethodDefinition);14            return mock;15        }16    }17}18using Telerik.JustMock;19using Telerik.JustMock.Core;20using Telerik.JustMock.Helpers;21using Telerik.JustMock.Expectations.Abstraction;22{23    {24        public object Execute(Invocation invocation)25        {26            var method = invocation.Method;27            var genericMethod = method.GetGenericMethodDefinition();28            var genericArguments = method.GetGenericArguments();29            var genericMethodDefinition = genericMethod.MakeGenericMethod(genericArguments);30            var mock = Mock.Create(genericMethodDefinition.DeclaringType, genericMethodDefinition);31            return mock;32        }33    }34}RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock.Core.Behaviors;2using Telerik.JustMock;3{4    {5        public int TestMethod()6        {7            return 0;8        }9    }10    {11        public int TestMethod()12        {13            return 0;14        }15    }16    {17        public int TestMethod()18        {19            return 0;20        }21    }22    {23        public int TestMethod()24        {25            return 0;26        }27    }28    {29        public int TestMethod()30        {31            return 0;32        }33    }34    {35        public int TestMethod()36        {37            return 0;38        }39    }40    {41        public int TestMethod()42        {43            return 0;44        }45    }46    {47        public int TestMethod()48        {49            return 0;50        }51    }52    {53        public int TestMethod()54        {55            return 0;56        }57    }58    {59        public int TestMethod()60        {61            return 0;62        }63    }64    {65        public int TestMethod()66        {67            return 0;68        }69    }70    {71        public int TestMethod()72        {73            return 0;74        }75    }76    {77        public int TestMethod()78        {79            return 0;80        }81    }82    {83        public int TestMethod()84        {85            return 0;86        }87    }88    {89        public int TestMethod()90        {91            return 0;92        }93    }94    {95        public int TestMethod()96        {97            return 0;98        }99    }100    {101        public int TestMethod()102        {103            return 0;104        }105    }106    {107        public int TestMethod()108        {109            return 0;RecursiveMockingBehavior
Using AI Code Generation
1using System;2using Telerik.JustMock;3using Telerik.JustMock.Behaviors;4{5    {6        void Foo();7    }8    {9        public void Foo()10        {11            Console.WriteLine("Foo");12        }13    }14    {15        private readonly IFoo _foo;16        public Bar(IFoo foo)17        {18            _foo = foo;19        }20        public void Bar()21        {22            _foo.Foo();23        }24    }25    {26        static void Main(string[] args)27        {28            var fooMock = Mock.Create<IFoo>();29            Mock.Arrange(() => fooMock.Foo()).DoInstead(() => Console.WriteLine("FooMock"));30            var bar = new Bar(fooMock);31            bar.Bar();32            var foo = new Foo();33            var bar1 = new Bar(foo);34            bar1.Bar();35            Mock.Assert(() => fooMock.Foo(), Occurs.Once());36        }37    }38}RecursiveMockingBehavior
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Core.Behaviors;3using System;4using System.Collections.Generic;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9    {10        public virtual string TestMethod()11        {12            return "Test";13        }14    }15    {16        static void Main(string[] args)17        {18            var testClass = Mock.Create<TestClass>();19            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test1").MustBeCalled();20            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test2").MustBeCalled();21            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test3").MustBeCalled();22            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test4").MustBeCalled();23            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test5").MustBeCalled();24            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test6").MustBeCalled();25            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test7").MustBeCalled();26            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test8").MustBeCalled();27            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test9").MustBeCalled();28            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test10").MustBeCalled();29            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test11").MustBeCalled();30            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test12").MustBeCalled();31            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test13").MustBeCalled();32            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test14").MustBeCalled();33            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test15").MustBeCalled();34            Mock.Arrange(() => testClass.TestMethod()).DoInstead(() => "Test16").MustBeCalled();35            Mock.Arrange(() => testRecursiveMockingBehavior
Using AI Code Generation
1{2    public static void Main()3    {4        var mock = Mock.Create<IFoo>();5        Mock.Arrange(() => mock.Bar(Arg.AnyString)).Returns("bar").MustBeCalled();6        Mock.Arrange(() => mock.Bar(Arg.AnyInt)).Returns("bar").MustBeCalled();7        Mock.Arrange(() => mock.Bar(Arg.AnyDouble)).Returns("bar").MustBeCalled();8        Mock.Arrange(() => mock.Bar(Arg.AnyFloat)).Returns("bar").MustBeCalled();9        Mock.Arrange(() => mock.Bar(Arg.AnyChar)).Returns("bar").MustBeCalled();10        Mock.Arrange(() => mock.Bar(Arg.AnyLong)).Returns("bar").MustBeCalled();11        Mock.Arrange(() => mock.Bar(Arg.AnyBool)).Returns("bar").MustBeCalled();12        Mock.Arrange(() => mock.Bar(Arg.AnyDecimal)).Returns("bar").MustBeCalled();13        Mock.Arrange(() => mock.Bar(Arg.AnyShort)).Returns("bar").MustBeCalled();14        Mock.Arrange(() => mock.Bar(Arg.AnyByte)).Returns("bar").MustBeCalled();15        Mock.Arrange(() => mock.Bar(Arg.AnyUInt)).Returns("bar").MustBeCalled();16        Mock.Arrange(() => mock.Bar(Arg.AnyULong)).Returns("bar").MustBeCalled();17        Mock.Arrange(() => mock.Bar(Arg.AnyUShort)).Returns("bar").MustBeCalled();18        Mock.Arrange(() => mock.Bar(Arg.AnySByte)).Returns("bar").MustBeCalled();19        Mock.Arrange(() => mock.Bar(Arg.AnyObject)).Returns("bar").MustBeCalled();20        Mock.Arrange(() => mock.Bar(Arg.AnyEnum)).Returns("bar").MustBeCalled();21        Mock.Arrange(() => mock.Bar(Arg.AnyType)).Returns("bar").MustBeCalled();22    }23}24{25    public override object Execute(Invocation invocation)26    {27        var method = invocation.Method;28        var returnType = method.ReturnType;29        if (returnType.IsInterface)30        {31            var mock = Mock.Create(returnType);32            return mock;33        }34        if (returnType.IsGenericType)35        {Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
