Best JustMockLite code snippet using Telerik.JustMock.Tests.Baz.Item
MockFixture.cs
Source: MockFixture.cs 
...551		}552		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]553		public void ShouldCreateMockFromRealObject()554		{555			var realItem = Mock.Create(() => new RealItem());556			Assert.NotNull(realItem);557		}558		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]559		public void ShouldCreateMockFromRealObjectForNonDefaultConstructor()560		{561			var realItem = Mock.Create(() => new RealItem(10));562			Assert.NotNull(realItem);563		}564		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]565		public void ShouldCreateMockFromRealObjectThatHasOnlyNonDefaultCtor()566		{567			var realItem = Mock.Create(() => new RealItem2(10, string.Empty));568			Assert.NotNull(realItem);569		}570		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]571		public void ShouldCreateMockFromRealCtorWithParams()572		{573			// the following line should not throw any argument exception.574			var realItem = Mock.Create(() => new RealItem("hello", 10, 20),575				Behavior.CallOriginal);576			Assert.Equal("hello", realItem.Text);577			Assert.Equal(2, realItem.Args.Length);578		}579		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]580		public void ShouldAssertMixins()581		{582			var realItem = Mock.Create<RealItem>(x =>583			{584				x.Implements<IDisposable>();585				x.CallConstructor(() => new RealItem(0));586			});587			var iDispose = realItem as IDisposable;588			iDispose.Dispose();589		}590		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]591		public void ShouldAssertMixinsWithClosure()592		{593			int a = 5;594			var realItem = Mock.Create<RealItem>(x =>595			{596				x.Implements<IDisposable>();597				x.CallConstructor(() => new RealItem(a));598			});599			var iDispose = realItem as IDisposable;600			iDispose.Dispose();601		}602		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]603		public void ShouldImplementDependentInterfacesWhenTopIsSpecified()604		{605			var realItem = Mock.Create<RealItem>(x =>606			{607				x.Implements<IFooImplemted>();608				x.CallConstructor(() => new RealItem(0));609			});610			Assert.NotNull(realItem as IFoo);611		}612		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]613		public void ShouldCloneWhenItemImplementsICloneableAndOneOtherInterface()614		{615			var myMock = Mock.Create<IDisposable>(x => x.Implements<ICloneable>());616			var myMockAsClonable = myMock as ICloneable;617			bool isCloned = false;618			Mock.Arrange(() => myMockAsClonable.Clone()).DoInstead(() => isCloned = true);619			myMockAsClonable.Clone();620			Assert.True(isCloned);621		}622		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]623		public void ShouldCallOriginalMethodForCallsOriginal()624		{625			var foo = Mock.Create<FooBase>(Behavior.CallOriginal);626			//// should call the original.627			Assert.Throws<InvalidOperationException>(() => foo.ThrowException());628		}629		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]630		public void ShouldNotCallOriginalMethodIfThereisASetupForCallsOriginal()631		{632			var foo = Mock.Create<FooBase>(Behavior.CallOriginal);633			Guid expected = Guid.NewGuid();634			Mock.Arrange(() => foo.GetGuid()).Returns(expected);635			Assert.Equal(expected, foo.GetGuid());636		}637		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]638		public void ShouldCallOriginalIfThereIsNoSetupForSimilarTypeForCallsOiginal()639		{640			var foo = Mock.Create<FooBase>(Behavior.CallOriginal);641			Mock.Arrange(() => foo.Echo(1)).Returns(2);642			Assert.Equal(2, foo.Echo(1));643			Assert.Equal(2, foo.Echo(2));644		}645		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]646		public void ShouldBeAbleToIgnoreArgumentsIfSpecified()647		{648			var foo = Mock.Create<IFoo>();649			Mock.Arrange(() => foo.Echo(10, 9)).IgnoreArguments().Returns(11);650			Assert.Equal(11, foo.Echo(1, 1));651		}652		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]653		public void ShouldInterceptVirtualsFromBaseClass()654		{655			var foo = Mock.Create<FooChild>();656			Mock.Arrange(() => foo.ThrowException()).Throws<ArgumentException>();657			Assert.Throws<ArgumentException>(() => foo.ThrowException());658		}659		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]660		public void ShouldAssertSetupWithArgAnyMatcherForArray()661		{662			var foo = Mock.Create<IFoo>();663			Mock.Arrange(() => foo.Submit(Arg.IsAny<byte[]>())).MustBeCalled();664			foo.Submit(new byte[10]);665			Mock.Assert(foo);666		}667		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]668		public void ShouldAssertDictionaryArgumentForIsAny()669		{670			var param = Mock.Create<IParams>();671			Mock.Arrange(() =>672				param.ExecuteArrayWithString(Arg.AnyString, Arg.IsAny<Dictionary<string, object>>()))673				.MustBeCalled();674			param.ExecuteArrayWithString("xxx", new Dictionary<string, object>());675			Mock.Assert(param);676		}677		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]678		public void ShouldAssertSetupWithCallHavingParamsAndPassedWithMatcher()679		{680			var foo = Mock.Create<IFoo>();681			Mock.Arrange(() => foo.FindOne(Arg.IsAny<ICriteria>())).Returns(true);682			var criteria = Mock.Create<ICriteria>();683			Assert.True(foo.FindOne(criteria));684		}685		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]686		public void ShouldThrowNotImplementedExceptionForBaseInovocationOnAbstract()687		{688			var node = Mock.Create<ExpressionNode>(Behavior.CallOriginal);689			Assert.Throws<NotImplementedException>(() => { var expected = node.NodeType; });690		}691		[TestMethod, TestCategory("Lite"), TestCategory("Behavior"), TestCategory("CallOriginal")]692		public void CallOriginalClause_AbstractMethod_ThrowsNotImplemented()693		{694			var mock = Mock.Create<IFoo>();695			Mock.Arrange(() => mock.JustCall()).CallOriginal();696			Assert.Throws<NotImplementedException>(() => mock.JustCall());697		}698		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]699		public void ShouldSetupMockWithParamsWhenNoParamIsPassed()700		{701			var fooParam = Mock.Create<FooParam>();702			var expected = "hello";703			Mock.Arrange(() => fooParam.FormatWith(expected)).Returns(expected);704			Assert.Equal(expected, fooParam.FormatWith(expected));705		}706		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]707		public void ShouldBeAbleToPassSingleArgIsAnyForParamsTypeArgument()708		{709			var fooParam = Mock.Create<FooParam>();710			Mock.Arrange(() => fooParam.GetDevicesInLocations(0, false, Arg.IsAny<MesssageBox>())).Returns(10);711			int result = fooParam.GetDevicesInLocations(0, false, new MesssageBox());712			Assert.Equal(10, result);713		}714		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]715		public void ShouldBeAbleToPassMultipleArgIsAnyForParamsTypeArgument()716		{717			var fooParam = Mock.Create<FooParam>();718			Mock.Arrange(() => fooParam719				.GetDevicesInLocations(0, false, Arg.IsAny<MesssageBox>(), Arg.IsAny<MesssageBox>()))720				.Returns(10);721			var box = new MesssageBox();722			int result = fooParam.GetDevicesInLocations(0, false, box, box);723			Assert.Equal(10, result);724		}725		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]726		public void ShouldCreateMockFromInterfaceWithSimilarGenericOverloads()727		{728			var session = Mock.Create<ISession>();729			Assert.NotNull(session);730		}731		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]732		public void ShouldDisposeArrangementEffects()733		{734			var mock = Mock.Create<IBar>();735			using (Mock.Arrange(() => mock.Value).Returns(123))736			{737				Assert.Equal(123, mock.Value);738			}739			Assert.Equal(0, mock.Value);740		}741		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]742		public void ShouldDisposeArrangementExpectations()743		{744			var mock = Mock.Create<IBar>();745			using (Mock.Arrange(() => mock.Value).MustBeCalled())746			{747				Assert.Throws<AssertionException>(() => Mock.Assert(mock));748			}749			Mock.Assert(mock);750		}751		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]752		public void ShouldAssertExpectedWithDynamicQuery()753		{754			var bookRepo = Mock.Create<IBookRepository>();755			var expected = new Book();756			Mock.Arrange(() => bookRepo.GetWhere(book => book.Id > 1))757					.Returns(expected)758					.MustBeCalled();759			var actual = bookRepo.GetWhere(book => book.Id > 1);760			Assert.Equal(expected, actual);761			Mock.Assert(bookRepo);762		}763		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]764		public void ShouldAssertMockExpressionDeleteArgumentForCompoundQuery()765		{766			var bookRepo = Mock.Create<IBookRepository>();767			var expected = new Book();768			string expectedTitle = "Telerik";769			Mock.Arrange(() => bookRepo.GetWhere(book => book.Id > 1 && book.Title == expectedTitle))770					.Returns(expected)771					.MustBeCalled();772			var actual = bookRepo.GetWhere(book => book.Id > 1 && book.Title == expectedTitle);773			Assert.Equal(expected, actual);774			Mock.Assert(bookRepo);775		}776		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]777		public void ShouldAssertMockForDynamicQueryWhenComparedUsingAVariable()778		{779			var repository = Mock.Create<IBookRepository>();780			var expected = new Book { Title = "Adventures" };781			var service = new BookService(repository);782			Mock.Arrange(() => repository.GetWhere(book => book.Id == 1))783				.Returns(expected)784				.MustBeCalled();785			var actual = service.GetSingleBook(1);786			Assert.Equal(actual.Title, expected.Title);787		}788		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]789		public void ShouldAssertWithIntValueUsedForLongValuedArgument()790		{791			int number = 5;792			int expectedResult = 42;793			var myClass = Mock.Create<ClassWithLongMethod>();794			Mock.Arrange(() => myClass.AddOne(number)).Returns(expectedResult);795			// Act796			var result = myClass.AddOne(number);797			// Assert798			Assert.Equal(expectedResult, result);799		}800		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]801		public void ShouldAutoArrangePropertySetInConstructor()802		{803			var expected = "name";804			var item = Mock.Create<Item>(() => new Item(expected));805			Assert.Equal(expected, item.Name);806		}807		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]808		public void ShouldTakeOutValueFromDoInteadWhenDefinedWithCustomDelegate()809		{810			int outArg = 1;811			var mock = Mock.Create<DoInsteadWithCustomDelegate>();812			Mock.Arrange(() => mock.Do(0, ref outArg)).DoInstead(new RefAction<int, int>((int i, ref int arg2) => { arg2 = 2; }));813			mock.Do(0, ref outArg);814			Assert.Equal(2, outArg);815		}816		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]817		public void ShouldCheckMethodOverloadsWhenResolvingInterfaceInheritance()818		{819			var project = Mock.Create<IProject>();820			Assert.NotNull(project);821		}822		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]823		public void PropertySetShouldThrowExceptionWhenNameHasSet_Literal()824		{825			var b_object = Mock.Create<B>();826			Mock.ArrangeSet<B>(() => b_object.b_string_set_get = string.Empty).DoNothing().MustBeCalled();827			b_object.b_string_set_get = string.Empty;828			Mock.Assert(b_object);829		}830		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]831		public void ShouldNotAffectAssertionForInvalidAsserts()832		{833			var foo = Mock.Create<IFoo>();834			Guid goodGuid = Guid.NewGuid();835			Guid badGuid = Guid.NewGuid();836			Mock.Arrange(() => foo.CallMeOnce(true, goodGuid)).OccursOnce();837			foo.CallMeOnce(true, goodGuid);838			Mock.Assert(() => foo.CallMeOnce(true, badGuid), Occurs.Never());839			Mock.Assert(() => foo.CallMeOnce(true, Guid.Empty), Occurs.Never());840			Mock.Assert(() => foo.CallMeOnce(true, goodGuid), Occurs.Once());841			Mock.Assert(() => foo.CallMeOnce(false, badGuid), Args.Ignore(), Occurs.Once());842			Mock.Assert(() => foo.CallMeOnce(Arg.AnyBool, badGuid), Occurs.Never());843			Mock.Assert(() => foo.CallMeOnce(Arg.IsAny<bool>(), badGuid), Occurs.Never());844		}845		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]846		public void ShouldEqualityCheckForMockFromAnInterfaceThatHasEquals()847		{848			IRule mockRule1 = Mock.Create<IRule>();849			List<IRule> ruleList = new List<IRule>();850			Assert.False(ruleList.Contains(mockRule1));851			ruleList.Add(mockRule1);852			Assert.True(ruleList.Contains(mockRule1));853		}854		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]855		public void ShouldAssertMethodWithKeyValuePairTypeArgument()856		{857			var presenter = Mock.Create<InteractiveKioskPresenter>(Behavior.CallOriginal);858			var key = Mock.Create<IKioskPart>();859			var val = Mock.Create<IKioskWellInfo>();860			presenter.ShowControl(new KeyValuePair<IKioskPart, IKioskWellInfo>(key, val));861		}862		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]863		public void ShouldAssertMethodWithStructTypeArgument()864		{865			var presenter = Mock.Create<InteractiveKioskPresenter>(Behavior.CallOriginal);866			Size size = new Size();867			presenter.DrawRect(size);868		}869		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]870		public void ShouldParsePrimitiveParamsArrayCorrectly()871		{872			var foo = Mock.Create<IFoo>();873			Mock.Arrange(() => foo.SubmitWithParams(Arg.AnyInt)).MustBeCalled();874			foo.SubmitWithParams(10);875			Mock.Assert(foo);876		}877		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]878		public void ShouldAssertCorrectMethodWhenDifferentArgumentsPassedForParamSetup()879		{880			var foo = Mock.Create<IFoo>();881			Mock.Arrange(() => foo.SubmitWithParams(10)).OccursOnce();882			foo.SubmitWithParams(10);883			foo.SubmitWithParams(10, 11);884			Mock.Assert(foo);885		}886		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]887		public void ShouldAssertOccursForIndexedPropertyWithDifferentArguments()888		{889			var foo = Mock.Create<Foo>();890			string expected = "string";891			Mock.Arrange(() => foo.Baz["Test"]).Returns(expected);892			Mock.Arrange(() => foo.Baz["TestName"]).Returns(expected);893			Assert.Equal(expected, foo.Baz["Test"]);894			Assert.Equal(expected, foo.Baz["TestName"]);895			Mock.Assert(() => foo.Baz["Test"], Occurs.Once());896			Mock.Assert(() => foo.Baz["TestName"], Occurs.Once());897		}898		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]899		public void ShouldNotSkipBaseInterfaceWhenSomeMembersAreSame()900		{901			var loanString = Mock.Create<ILoanStringField>();902			Assert.NotNull(loanString);903		}904		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]905		public void ShouldAssertParamsArrayAsArrayBasedOnArgument()906		{907			string value1 = "Hello";908			string value2 = "World";909			var session = Mock.Create<IMockable>();910			Mock.Arrange(() => session.Get<string>(Arg.Matches<string[]>(v => v.Contains("Lol") &&911													 v.Contains("cakes"))))912				.Returns(new[]913				 {914					 value1,915					 value2,916				 });917			var testValues = new[]{918						 "Lol",919						 "cakes"920					 };921			var result = session.Get<string>(testValues);922			Assert.Equal(value1, result[0]);923			Assert.Equal(value2, result[1]);924		}925		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]926		public void ShouldNotInitRescursiveMockingWithProfilerForProperyThatReturnsMock()927		{928			WorkerHelper helper = new WorkerHelper();929			helper.Arrange();930			helper.Worker.Echo("hello");931		}932		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]933		public void ShouldAssertMockWithEnumArgumentWithUnderlyingTypeOtherThanInt()934		{935			var subdivisionTypeCode = SubdivisionTypeCode.City;936			var subdivisionTypeRepository = Mock.Create<ISubdivisionTypeRepository>();937			Mock.Arrange(() => subdivisionTypeRepository.Get(subdivisionTypeCode)).Returns((SubdivisionTypeCode subDivision) =>938			{939				return subDivision.ToString();940			});941			var result = subdivisionTypeRepository.Get(subdivisionTypeCode);942			Assert.Equal(result, subdivisionTypeCode.ToString());943			Mock.AssertAll(subdivisionTypeRepository);944		}945		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]946		public void ShouldAssertMockWithNullableValueTypeArg()947		{948			FooNullable foo = Mock.Create<FooNullable>();949			var now = DateTime.Now;950			Mock.Arrange(() => foo.ValideDate(now)).MustBeCalled();951			foo.ValideDate(now);952			Mock.Assert(foo);953		}954		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]955		public void ShouldAssertMockWithNullForNullableValueTypeArg()956		{957			FooNullable foo = Mock.Create<FooNullable>();958			Mock.Arrange(() => foo.ValideDate(null)).MustBeCalled();959			foo.ValideDate(null);960			Mock.Assert(foo);961		}962		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]963		public void ShouldAssertCallOriginalForAbstractClass()964		{965			Assert.NotNull(Mock.Create<TestTreeItem>(Behavior.CallOriginal));966		}967		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]968		public void ShouldCallBaseWhenCallOriginalSpecifiedForMock()969		{970			var item = Mock.Create<TestTreeItem>(Behavior.CallOriginal);971			var result = ((IComparable)item).CompareTo(10);972			Assert.Equal(1, result);973		}974		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]975		public void ShouldArrangeBothInterfaceMethodAndImplementation()976		{977			var mock = Mock.Create<FrameworkElement>() as ISupportInitialize;978			bool implCalled = false;979			Mock.Arrange(() => mock.Initialize()).DoInstead(() => implCalled = true).MustBeCalled();980			mock.Initialize();981			Assert.True(implCalled);982			Mock.Assert(() => mock.Initialize());983		}984		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]985		public void ShouldArrangeBothBaseAndOverriddenMethod()986		{987			var mock = Mock.Create<Control>() as FrameworkElement;988			bool implCalled = false;989			Mock.Arrange(() => mock.Initialize()).DoInstead(() => implCalled = true);990			mock.Initialize();991			Assert.True(implCalled);992			Mock.Assert(() => mock.Initialize());993			Mock.Assert(() => ((ISupportInitialize)mock).Initialize());994		}995		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]996		public void ShouldArrangeBaseMethodInManyImplementations()997		{998			var fe = Mock.Create<FrameworkElement>();999			var control = Mock.Create<Control>();1000			int calls = 0;1001			Mock.Arrange(() => (null as ISupportInitialize).Initialize()).DoInstead(() => calls++);1002			fe.Initialize();1003			Assert.Equal(1, calls);1004			control.Initialize();1005			Assert.Equal(2, calls);1006		}1007		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1008		public void ShouldAssertMethodAtAllHierarchyLevels()1009		{1010			var control = Mock.Create<Control>();1011			control.Initialize();1012			Mock.Assert(() => control.Initialize(), Occurs.Once());1013			Mock.Assert(() => (control as FrameworkElement).Initialize(), Occurs.Once());1014			Mock.Assert(() => (control as ISupportInitialize).Initialize(), Occurs.Once());1015		}1016		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1017		public void ShouldArrangeBaseMethodInManyImplementationsForProperty()1018		{1019			var fe = Mock.Create<FrameworkElement>();1020			var control = Mock.Create<Control>();1021			int calls = 0;1022			Mock.Arrange(() => (null as ISupportInitialize).Property).DoInstead(() => calls++);1023			var property = fe.Property;1024			Assert.Equal(1, calls);1025			property = control.Property;1026			Assert.Equal(2, calls);1027		}1028		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1029		public void ShouldAssertMethodAtAllHierarchyLevelsForProperty()1030		{1031			var control = Mock.Create<Control>();1032			var property = control.Property;1033			Mock.Assert(() => control.Property, Occurs.Once());1034			Mock.Assert(() => (control as FrameworkElement).Property, Occurs.Once());1035			Mock.Assert(() => (control as ISupportInitialize).Property, Occurs.Once());1036		}1037		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1038		public void ShouldArrangeInheritableMemberOfExplicitlySpecifiedType()1039		{1040			var ident = Mock.Create<IIdentifiable>();1041			Mock.Arrange<IIdentifiable, int>(new Func<int>(() => ident.Id)).Returns(15);1042			Assert.Equal(15, ident.Id);1043		}1044#if !SILVERLIGHT1045		[TestMethod, TestCategory("Elevated"), TestCategory("Lite"), TestCategory("Mock")]1046		public void ShouldNotCreateProxyIfNotNecessary()1047		{1048			var mock = Mock.Create<Poco>();1049			Mock.Arrange(() => mock.Data).Returns(10);1050			Assert.Equal(10, mock.Data);1051			if (Mock.IsProfilerEnabled)1052				Assert.Same(typeof(Poco), mock.GetType());1053		}1054#elif !LITE_EDITION1055		[TestMethod, TestCategory("Elevated"), TestCategory("Mock")]1056		public void ShouldNotCreateProxyIfNotNecessary()1057		{1058			var mock = Mock.Create<Poco>(Constructor.Mocked);1059			Mock.Arrange(() => mock.Data).Returns(10);1060			Assert.Equal(10, mock.Data);1061			Assert.Same(typeof(Poco), mock.GetType());1062		}1063#endif1064#if LITE_EDITION && !COREFX1065		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1066		public void MockInternalMembersWithoutExplicitlyGivenVisibilitySentinel()1067		{1068			Assert.Throws<MockException>(() => Mock.Create<InvisibleInternal>());1069		}1070#endif1071		public class Poco // should be inheritable but shouldn't be abstract1072		{1073			public virtual int Data { get { return 0; } }1074		}1075		public interface IIdentifiable1076		{1077			int Id { get; }1078		}1079		public interface ISupportInitialize1080		{1081			void Initialize();1082			string Property { get; }1083		}1084		public abstract class FrameworkElement : ISupportInitialize1085		{1086			public abstract void Initialize();1087			public abstract string Property { get; set; }1088		}1089		public abstract class Control : FrameworkElement1090		{1091			public override void Initialize()1092			{1093				throw new NotImplementedException();1094			}1095			public override string Property1096			{1097				get1098				{1099					throw new NotImplementedException();1100				}1101				set1102				{1103					throw new NotImplementedException();1104				}1105			}1106		}1107		public abstract class TestTreeItem : IComparable1108		{1109			int IComparable.CompareTo(object obj)1110			{1111				return 1;1112			}1113		}1114		public class FooNullable1115		{1116			public virtual void ValideDate(DateTime? date)1117			{1118			}1119		}1120		public enum SubdivisionTypeCode : byte1121		{1122			None = 255,1123			State = 0,1124			County = 1,1125			City = 2,1126		}1127		public interface ISubdivisionTypeRepository1128		{1129			string Get(SubdivisionTypeCode subdivisionTypeCode);1130		}1131		public class WorkerHelper1132		{1133			public IWorker TheWorker { get; private set; }1134			public WorkerHelper()1135			{1136				this.TheWorker = Mock.Create<IWorker>(Behavior.Strict);1137			}1138			public IWorker Worker1139			{1140				get1141				{1142					return this.TheWorker;1143				}1144			}1145			public void Arrange()1146			{1147				Mock.Arrange(() => this.TheWorker.Echo(Arg.AnyString)).DoNothing();1148			}1149		}1150		public interface IWorker1151		{1152			void Echo(string value);1153		}1154		public interface IMockable1155		{1156			T[] Get<T>(params string[] values);1157		}1158		public interface ILoanStringField : ILoanField1159		{1160			string Value { get; set; }1161		}1162		public interface ILoanField1163		{1164			void ClearValue();1165			object Value { get; set; }1166		}1167		public interface IKioskPart1168		{1169		}1170		public interface IKioskWellInfo1171		{1172		}1173		public class InteractiveKioskPresenter1174		{1175			public virtual void ShowControl(KeyValuePair<IKioskPart, IKioskWellInfo> kPart)1176			{1177			}1178			public virtual void DrawRect(Size size)1179			{1180			}1181		}1182		public struct Size1183		{1184		}1185		public interface IRule1186		{1187			bool Equals(object obj);1188		}1189		public class B1190		{1191			public string b_string = null;1192			public virtual string b_string_set_get { get { return b_string; } set { b_string = value; } }1193		}1194		public interface IProject : IProjectItemContainer1195		{1196			IEnumerable<IProjectItem> Items { get; }1197			void AddChild();1198		}1199		public interface IProjectItem : IProjectItemContainer1200		{1201		}1202		public interface IProjectItemContainer : IDocumentItemContainer<IProjectItem>1203		{1204			bool CanAddChild { get; }1205		}1206		public interface IDocumentItemContainer : IDocumentItem1207		{1208			IEnumerable<IDocumentItem> Children { get; }1209		}1210		public interface IDocumentItemContainer<T> : IDocumentItemContainer1211		where T : IDocumentItem1212		{1213			IEnumerable<T> Children { get; }1214			void AddChild(T child);1215			void RemoveChild(T child);1216		}1217		public interface IDocumentItem1218		{1219		}1220		public delegate void RefAction<T1, T2>(T1 arg1, ref T2 arg2);1221		public class DoInsteadWithCustomDelegate1222		{1223			public virtual void Do(int k, ref int j)1224			{1225			}1226		}1227		public class ClassWithLongMethod1228		{1229			public virtual long AddOne(long number)1230			{1231				return number + 1;1232			}1233		}1234		public class BookService1235		{1236			private IBookRepository repository;1237			public BookService(IBookRepository repository)1238			{1239				this.repository = repository;1240			}1241			public Book GetSingleBook(int id)1242			{1243				return repository.GetWhere(book => book.Id == id);1244			}1245		}1246		public interface IBookRepository1247		{1248			Book GetWhere(Expression<Func<Book, bool>> expression);1249		}1250		public class Book1251		{1252			public int Id { get; private set; }1253			public string Title { get; set; }1254		}1255		#region Syntax Integrity1256		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1257		public void ShouldBeAbleToInvokeMustBeCalledWithIgnoreArguments()1258		{1259			var foo = Mock.Create<Foo>();1260			Mock.Arrange(() => foo.Execute(0)).IgnoreArguments().MustBeCalled();1261			foo.Execute(10);1262			Mock.Assert(foo);1263		}1264		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1265		public void ShouldBeAbleToUseMuseBeCalledAfterIgnoreFoFunc()1266		{1267			var foo = Mock.Create<Foo>();1268			Mock.Arrange(() => foo.Echo(0)).IgnoreArguments().MustBeCalled();1269			foo.Echo(10);1270			Mock.Assert(foo);1271		}1272		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1273		public void ShouldBeAbleToDoDoNothingForNonVoidCalls()1274		{1275			var foo = Mock.Create<Foo>();1276			Mock.Arrange(() => foo.Echo(Arg.AnyInt)).DoNothing();1277			foo.Echo(10);1278		}1279		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1280		public void ShouldBeAbleToSpecifyOccursAfterReturns()1281		{1282			var foo = Mock.Create<Foo>();1283			Mock.Arrange(() => foo.Echo(Arg.AnyInt))1284				.Returns(10)1285				.Occurs(1);1286			foo.Echo(10);1287			Mock.Assert(foo);1288		}1289		internal abstract class FooAbstract1290		{1291			protected internal abstract bool TryCreateToken(string literal);1292		}1293		internal abstract class FooAbstract2 : FooAbstract1294		{1295		}1296		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1297		public void ShouldAsssertMockHavingInternalAbstractBaseMethod()1298		{1299			var foo = Mock.Create<FooAbstract2>();1300			foo.TryCreateToken(string.Empty);1301		}1302		#endregion1303		public interface ISession1304		{1305			ICriteria CreateCriteria<T>() where T : class;1306			ICriteria CreateCriteria(string entityName);1307			ICriteria CreateCriteria<T>(string alias) where T : class;1308			ICriteria CreateCriteria(System.Type persistentClass);1309			ICriteria CreateCriteria(string entityName, string alias);1310			ICriteria CreateCriteria(System.Type persistentClass, string alias);1311		}1312		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1313		public void ShouldNotTryToWeaveMethodInSilverlightRuntime()1314		{1315			var foo = Mock.Create<FooSilver>();1316			Assert.NotNull(foo);1317		}1318		public interface ICloneable1319		{1320			object Clone();1321		}1322		public abstract class FooSilver1323		{1324			public void Do()1325			{1326			}1327		}1328#if LITE_EDITION1329		[TestMethod]1330		public void ShouldThrowMockExceptionWhenTryingToMockFinalMethod()1331		{1332			var mock = Mock.Create<Bar>();1333			Assert.Throws<MockException>(() => Mock.Arrange(() => mock.Submit()).DoNothing());1334		}1335		public class Bar1336		{1337			public void Submit()1338			{1339			}1340		}1341#endif1342		#region Test Insfrastructure1343		public class Foo1344		{1345			public virtual void Execute(int arg1)1346			{1347			}1348			public virtual int Echo(int arg1)1349			{1350				return arg1;1351			}1352			public virtual Baz Baz { get; set; }1353		}1354		public class Baz1355		{1356			public virtual string this[string key]1357			{1358				get1359				{1360					return null;1361				}1362			}1363		}1364		public class FooParam1365		{1366			public virtual int GetDevicesInLocations(int arg1, bool bExclude, params MesssageBox[] box)1367			{1368				return default(int);1369			}1370			public virtual string FormatWith(string format, params object[] args)1371			{1372				return string.Empty;1373			}1374		}1375		public class MesssageBox1376		{1377		}1378		public enum ExpressionNodeType1379		{1380			Constant,1381			Binary1382		}1383		public abstract class ExpressionNode1384		{1385			public abstract ExpressionNodeType NodeType { get; }1386		}1387		public class RealItem1388		{1389			public RealItem()1390			{1391			}1392			public RealItem(int num)1393			{1394			}1395			public RealItem(string text, params int[] args)1396			{1397				if (args.Length == 0 || string.IsNullOrEmpty(text))1398				{1399					throw new ArgumentException();1400				}1401				this.text = text;1402				this.args = args;1403			}1404			public string Text1405			{1406				get1407				{1408					return text;1409				}1410			}1411			public int[] Args1412			{1413				get1414				{1415					return args;1416				}1417			}1418			public string text;1419			private int[] args;1420		}1421		public class RealItem21422		{1423			public RealItem2(int num, string str)1424			{1425			}1426		}1427		public class Item1428		{1429			public virtual string Name { get; set; }1430			public Item(string name)1431			{1432				Name = name;1433			}1434		}1435		public class FooGeneric<T>1436		{1437			public virtual T Get<T1, T2>(T1 p1, T2 p2)1438			{1439				return default(T);1440			}1441			public virtual void Execute<T1>(T1 arg)1442			{1443				throw new Exception();1444			}1445		}1446		public class FooGeneric1447		{1448			public virtual TRet Get<T, TRet>(T arg1)1449			{1450				return default(TRet);1451			}1452			public virtual TRet Execute<T1, TRet>(out T1 arg1)1453			{1454				arg1 = default(T1);1455				object[] args = new object[1];1456				args[0] = arg1;1457				return default(TRet);1458			}1459			public virtual int Get<T1>()1460			{1461				throw new NotImplementedException();1462			}1463		}1464		public class FooWithInternalConstruct1465		{1466			internal FooWithInternalConstruct()1467			{1468			}1469			public virtual void Execute()1470			{1471				throw new ArgumentException();1472			}1473		}1474		public class Nested1475		{1476			public int expected;1477			public int expeted1;1478		}1479		class FooService : IFooService { }1480		interface IFooService { }1481		public interface ICriteria1482		{1483		}1484		public interface IFoo1485		{1486			string Execute(string arg);1487			void JustCall();1488			void Execute(Guid guid);1489			void Execute(bool flag, Guid guid);1490			void Execute(out int expected);1491			void Execute(out DateTime date);1492			IFoo GetFoo();1493			int Echo(int arg1);1494			int Echo(int arg1, int arg2);1495			int Echo(int arg1, int arg2, int arg3);1496			int Echo(int arg1, int arg2, int arg3, int arg4);1497			void Submit(int arg1);1498			void Submit(int arg1, int arg2);1499			void Submit(int arg1, int arg2, int arg3);1500			void Submit(int arg1, int arg2, int arg3, int arg4);1501			void Submit(byte[] arg);1502			void SubmitWithParams(params int[] args);1503			void CallMeOnce(bool flag, Guid guid);1504			bool FindOne(params ICriteria[] criteria);1505		}1506		public interface IBar1507		{1508			int Echo(int value);1509			int Value { get; set; }1510		}1511		public interface IFooImplemted : IFoo1512		{1513		}1514		public class CustomExepction : Exception1515		{1516			public CustomExepction(string message, bool throwed)1517				: base(message)1518			{1519			}1520		}1521		public class Log1522		{1523			public virtual void Info(string message)1524			{1525				throw new Exception(message);1526			}1527		}1528		public abstract class FooBase1529		{1530			public virtual string GetString(string inString)1531			{1532				return inString;1533			}1534			public virtual Guid GetGuid()1535			{1536				return default(Guid);1537			}1538			public virtual int Echo(int arg1)1539			{1540				return arg1;1541			}1542			public virtual void ThrowException()1543			{1544				throw new InvalidOperationException("This should throw expection.");1545			}1546		}1547		public class FooChild : FooBase1548		{1549		}1550		public class FooOverridesEquals1551		{1552			public FooOverridesEquals(string name)1553			{1554				this.name = name;1555			}1556			public override bool Equals(object obj)1557			{1558				return (obj is FooOverridesEquals) &&1559					((FooOverridesEquals)obj).name == this.name;1560			}1561			public override int GetHashCode()1562			{1563				if (!string.IsNullOrEmpty(name))1564				{1565					return name.GetHashCode();1566				}1567				return base.GetHashCode();1568			}1569			private string name;1570		}1571		public interface IParams1572		{1573			string ExecuteByName(int index, params string[] args);1574			string ExecuteParams(params string[] args);1575			string ExecuteArray(string[] args);1576			string ExecuteArrayWithString(string arg1, Dictionary<string, object> dic);1577		}1578		public class ClassNonDefaultGuidConstructor1579		{1580			public ClassNonDefaultGuidConstructor(Guid guidValue)1581			{1582				this.guidValue = guidValue;1583			}1584			public Guid guidValue;1585		}1586		public class ClassWithNonDefaultConstructor1587		{1588			internal ClassWithNonDefaultConstructor()1589			{1590			}1591			public ClassWithNonDefaultConstructor(string strValue, int intValue)1592			{1593				this.strValue = strValue;1594				this.intValue = intValue;1595			}1596			public ClassWithNonDefaultConstructor(string strValue, int intValue, bool boolValue)1597			{1598				this.strValue = strValue;1599				this.intValue = intValue;1600				this.boolValue = boolValue;1601			}1602			public override string ToString()1603			{1604				return string.Format("{0}+{1}+{2}", strValue, intValue, boolValue);1605			}1606			private string strValue;1607			private int intValue;1608			private bool boolValue;1609		}1610		#endregion1611		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1612		public void ShouldInterpretNullAsDefaultInitializedValueTypeInCtorCall()1613		{1614			var mock = Mock.Create<ValueTypeInCtor>(null, null);1615			Assert.Equal(0, mock.a);1616		}1617		public class ValueTypeInCtor1618		{1619			public readonly int a;1620			public ValueTypeInCtor(ValueTypeInCtor q, int a)1621			{1622				this.a = a;1623			}1624		}1625#if !__IOS__1626		[ComImport]1627#endif1628		[Guid("4256871F-E8D7-40C2-9E1E-61CFA78C3EC1")]1629		public interface IVersioned1630		{1631			[DispId(1)]1632			string Identity { [DispId(1)] get; [DispId(1)] set; }1633		}1634#if !__IOS__1635		[ComImport]1636#endif1637		[Guid("8DAF6396-300A-46E2-AA4C-CCB6103FB955")]1638		public interface IVersioned2 : IVersioned1639		{1640			[DispId(1)]1641			string Identity { [DispId(1)] get; [DispId(1)] set; }1642		}1643		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1644		public void ShouldCoalesceDifferentMembersWithSameDispIdInVersionedInterfaces()1645		{1646			var mock = Mock.Create<IVersioned2>();1647			mock.Identity = "id";1648			var baseIdentity = ((IVersioned)mock).Identity;1649			Assert.Equal("id", baseIdentity);1650			Assert.Equal("id", mock.Identity);1651		}1652		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1653		public void ShouldMockInternalAbstract()1654		{1655			var mock = Mock.Create<InternalAbstract>();1656			Assert.NotNull(mock);1657		}1658		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1659		public void ShouldAcceptTypedEnumAsMethodArgument()1660		{1661			var mock = Mock.Create<IUnmanagedService>();1662			Mock.Arrange(() => mock.IsAllowed(ShortFlags.One)).Returns(true);1663			Assert.True(mock.IsAllowed(ShortFlags.One));1664			Assert.False(mock.IsAllowed(ShortFlags.None));1665			Assert.False(mock.IsAllowed(ShortFlags.Two));1666		}1667		public enum ShortFlags : short1668		{1669			None = 0, One = 1, Two = 1001670		}1671		public interface IUnmanagedService1672		{1673			bool IsAllowed(ShortFlags flags);1674		}1675#if !DOTNET35 && !SILVERLIGHT && !WINDOWS_PHONE1676		[TestMethod, TestCategory("Lite"), TestCategory("Regression")]1677		public void ShouldInterceptDynamicProxyMethodsFromMultipleThreads()1678		{1679			var generator = Mock.Create<IGuidGenerator>();1680			var lotsOfGuids = Enumerable.Range(0, 3000)1681								.AsParallel()1682								.Select(x => generator.Generate())1683								.ToArray();1684			// didn't throw1685		}1686		public interface IGuidGenerator1687		{1688			Guid Generate();1689		}1690#endif1691		public class ClassWithCtor1692		{1693			public ClassWithCtor(string s)1694			{1695			}1696		}1697		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1698		public void ShouldThrowMeaningfulExceptionWhenConstructorArgumentsAreIncorrect()1699		{1700			var ex = Assert.Throws<Exception>(() => Mock.Create<ClassWithCtor>(5));1701		}1702		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1703		public void ShouldArrangeMemberFromAdditionalInterfaceOnClassMock()1704		{1705			var mock = Mock.Create<Exception>(cfg => cfg.Implements<IIdentity>());1706			var identity = mock as IIdentity;1707			Mock.Arrange(() => identity.Name).Returns("mock");1708			Assert.Equal("mock", identity.Name);1709		}1710		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1711		public void ShouldArrangeMemberFromAdditionalInterfaceOnInterfaceMock()1712		{1713			var mock = Mock.Create<IPrincipal>(cfg => cfg.Implements<IIdentity>());1714			var identity = mock as IIdentity;1715			Mock.Arrange(() => identity.Name).Returns("mock");1716			Assert.Equal("mock", identity.Name);1717		}1718#if !PORTABLE1719		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1720		public void ShouldMockTypesFromReflectionNamespace()1721		{1722			var reflectionTypes = new[]1723			{1724				typeof(MemberInfo),1725				typeof(MethodBase),1726				typeof(MethodInfo),1727				typeof(ConstructorInfo),1728				typeof(FieldInfo),1729				typeof(PropertyInfo),1730				typeof(EventInfo),1731			};1732			foreach (var type in reflectionTypes)1733			{1734				var mock = Mock.Create(type) as MemberInfo;1735				Mock.Arrange(() => mock.Name).Returns("name");1736				Assert.Equal("name", mock.Name);1737			}1738		}1739#endif1740#if !SILVERLIGHT && !WINDOWS_PHONE1741		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1742		public void ShouldMockWeakReference()1743		{1744			var weak = Mock.Create<WeakReference>();1745			Mock.Arrange(() => weak.IsAlive).Returns(true);1746			Assert.True(weak.IsAlive);1747		}1748#endif1749		public class CtorWithDefaults1750		{1751			public readonly int A;1752			public CtorWithDefaults(int a = 5)1753			{1754				this.A = a;1755			}1756		}1757		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1758		public void ShouldCallConstructorWithDefaultArguments()1759		{1760			var mock = Mock.Create<CtorWithDefaults>(Behavior.CallOriginal);1761			Assert.Equal(5, mock.A);1762		}1763#if !PORTABLE1764		public interface ITwoFace1765		{1766			int GetFace1();1767			int GetFace2();1768		}1769		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1770		public void ShouldFilterInterceptors()1771		{1772			var mock = Mock.Create<ITwoFace>(conf =>1773			{1774				conf.SetInterceptorFilter(mi => mi.Name == "GetFace1");1775			});1776			Mock.Arrange(() => mock.GetFace1()).Returns(10);1777			Mock.Arrange(() => mock.GetFace2()).Returns(20); // TODO: this should actually throw an exception, instead1778			Assert.Equal(10, mock.GetFace1());1779			Assert.Equal(0, mock.GetFace2());1780		}1781#endif1782		public class StaticCtor1783		{1784			public static bool called;1785			static StaticCtor()1786			{1787				called = true;1788			}1789		}1790		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1791		public void ShouldCallStaticConstructorWhenCreatingMock()1792		{1793			var mock = Mock.Create<StaticCtor>();1794			Assert.True(StaticCtor.called);1795		}1796		public interface IGeneric1797		{1798			string Get<TItem1, TItem2>(TItem1 a, TItem2 b);1799		}1800		public class Generic : IGeneric1801		{1802			public virtual string Get<T, U>(T t, U u)1803			{1804				return "";1805			}1806		}1807		[TestMethod]1808		public void ShouldCreateMockWithRenamedGenericParameters()1809		{1810			var mock = Mock.Create<Generic>();1811			Mock.Arrange(() => mock.Get<string, int>("5", 5)).Returns("string");1812			Assert.Equal("string", mock.Get<string, int>("5", 5));1813		}1814		public class SealedGeneric : IGeneric1815		{1816			public string Get<TItem1, TItem2>(TItem1 a, TItem2 b)1817			{1818				throw new NotImplementedException();1819			}1820		}1821		[TestMethod, TestCategory("Lite"), TestCategory("Mock")]1822		public void ShouldArrangeFinalGenericMethodThroughInterface()1823		{1824			IGeneric mock = Mock.Create<SealedGeneric>(1825#if LITE_EDITION1826			cfg => cfg.Implements<IGeneric>()1827#endif1828);1829			Mock.Arrange(() => mock.Get(5, "4")).Returns("123");1830			Assert.Equal("123", mock.Get(5, "4"));...MatchersFixture.cs
Source: MatchersFixture.cs 
1/*2 JustMock Lite3 Copyright © 2010-2015 Progress Software Corporation4   Licensed under the Apache License, Version 2.0 (the "License");5   you may not use this file except in compliance with the License.6   You may obtain a copy of the License at7   http://www.apache.org/licenses/LICENSE-2.08   Unless required by applicable law or agreed to in writing, software9   distributed under the License is distributed on an "AS IS" BASIS,10   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.11   See the License for the specific language governing permissions and12   limitations under the License.13*/14using System;15using System.Collections.Generic;16using System.Linq.Expressions;17#region JustMock Test Attributes18#if NUNIT19using NUnit.Framework;20using TestCategory = NUnit.Framework.CategoryAttribute;21using TestClass = NUnit.Framework.TestFixtureAttribute;22using TestMethod = NUnit.Framework.TestAttribute;23using TestInitialize = NUnit.Framework.SetUpAttribute;24using TestCleanup = NUnit.Framework.TearDownAttribute;25using AssertionException = NUnit.Framework.AssertionException;26#elif XUNIT27using Xunit;28using Telerik.JustMock.XUnit.Test.Attributes;29using TestCategory = Telerik.JustMock.XUnit.Test.Attributes.XUnitCategoryAttribute;30using TestClass = Telerik.JustMock.XUnit.Test.Attributes.EmptyTestClassAttribute;31using TestMethod = Xunit.FactAttribute;32using TestInitialize = Telerik.JustMock.XUnit.Test.Attributes.EmptyTestInitializeAttribute;33using TestCleanup = Telerik.JustMock.XUnit.Test.Attributes.EmptyTestCleanupAttribute;34using AssertionException = Telerik.JustMock.XUnit.AssertFailedException;35#elif VSTEST_PORTABLE36using Microsoft.VisualStudio.TestPlatform.UnitTestFramework;37using AssertionException = Microsoft.VisualStudio.TestPlatform.UnitTestFramework.AssertFailedException;38#else39using Microsoft.VisualStudio.TestTools.UnitTesting;40using AssertionException = Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException;41#endif42#endregion43namespace Telerik.JustMock.Tests44{45	[TestClass]46	public partial class MatchersFixture47	{48		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]49		public void ShouldMatchAnyParameterValue()50		{51			var foo = Mock.Create<IFoo>();52			Mock.Arrange(() => foo.Echo(Arg.IsAny<string>())).Returns("pong");53			Mock.Arrange(() => foo.Echo(Arg.IsAny<int>())).Returns(1);54			Assert.Equal(foo.Echo("ping"), "pong");55			Assert.Equal(foo.Echo("Any"), "pong");56			Assert.Equal(foo.Echo(10), 1);57		}58		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]59		public void ShouldMatchPredicates()60		{61			var foo = Mock.Create<IFoo>();62			Mock.Arrange(() => foo.Echo(Arg.Matches<int>(x => x > 0 && x < 5))).Returns(1);63			Mock.Arrange(() => foo.Echo(Arg.Matches<int>(x => x >= 5 && x < 10))).Returns(2);64			Mock.Arrange(() => foo.Echo(Arg.Matches<int>(x => x > 10))).Returns(3);65			Assert.Equal(1, foo.Echo(3));66			Assert.Equal(2, foo.Echo(5));67			Assert.Equal(3, foo.Echo(12));68			Assert.Equal(2, foo.Echo(7));69		}70		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]71		public void ShouldMatchValueInRange()72		{73			var foo = Mock.Create<IFoo>();74			Mock.Arrange(() => foo.Echo(Arg.IsInRange(1, 5, RangeKind.Inclusive))).Returns(1);75			Mock.Arrange(() => foo.Echo(Arg.IsInRange(6, 10, RangeKind.Exclusive))).Returns(2);76			Assert.Equal(foo.Echo(1), 1);77			Assert.Equal(foo.Echo(2), 1);78			Assert.Equal(foo.Echo(5), 1);79			// default value.80			Assert.Equal(foo.Echo(6), 0);81			// second one.82			Assert.Equal(foo.Echo(7), 2);83			Assert.Equal(foo.Echo(9), 2);84		}85		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]86		public void ShouldAssertPreDefinedAnyMatcherWithInt()87		{88			var foo = Mock.Create<IFoo>();89			Mock.Arrange(() => foo.Echo(Arg.AnyInt)).MustBeCalled();90			foo.Echo(2);91			Mock.Assert(foo);92		}93		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]94		public void ShouldMatchArgumetnForNullOrEmpty()95		{96			var foo = Mock.Create<IFoo>();97			Mock.Arrange(() => foo.Echo(Arg.NullOrEmpty)).Occurs(2);98			foo.Echo(string.Empty);99			foo.Echo(null);100			Mock.Assert(foo);101		}102		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]103		public void ShouldMatchNullableArgument()104		{105			var foo = Mock.Create<Foo>();106			Mock.Arrange(() => foo.Echo(Arg.IsAny<int?>())).Returns(10);107			int ret = foo.Echo(4);108			Assert.Equal(10, ret);109			Assert.Equal(10, foo.Echo(null));110		}111		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]112		public void ShouldSelectCorrectSetupInCaseOfSpecialization()113		{114			var foo = Mock.Create<IFoo>();115			Mock.Arrange(() => foo.Echo(Arg.AnyInt)).Returns(10);116			Mock.Arrange(() => foo.Echo(Arg.Matches<int>(x => x > 10)))117				.Throws(new ArgumentException());118			foo.Echo(1);119			Assert.Throws<ArgumentException>(() => foo.Echo(11));120		}121		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]122		public void ShouldAssertArgIsAnyForDelegates()123		{124			var foo = Mock.Create<IFoo>();125			bool called = false;126			Mock.Arrange(() => foo.Submit<string>(string.Empty, Arg.IsAny<Func<string, string>>()))127				.DoInstead(() => called = true);128			foo.Submit<string>(string.Empty, p => string.Empty);129			Assert.True(called);130		}131		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]132		public void ShouldAssertNewArgumentWhenArgIsAnySpecified()133		{134			var foo = Mock.Create<Foo>();135			Mock.Arrange(() => foo.ExeuteObject(Arg.IsAny<Foo>(), Arg.IsAny<Dummy>()));136			foo.ExeuteObject(null, new Dummy());137			Mock.AssertAll(foo);138		}139		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]140		public void ShouldMatchParamsArrayWithArgIsAnyForExpressionType()141		{142			var foo = Mock.Create<Foo>();143			string expected = "KKGKGKGHGHJG";144			var entity = new Entity { Prop2 = expected };145			Mock.Arrange(() => foo.GetByID(42, Arg.IsAny<Expression<Func<Entity, object>>>(), Arg.IsAny<Expression<Func<Entity, object>>>())).Returns(entity);146			//Act147			string result = foo.GetByID(42, x => x.Prop1, x => x.Prop2).Prop2;148			//Assert149			Assert.Equal(expected, result);150		}151		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]152		public void ShouldMatchExactInstanceBasedOnFilter()153		{154			string expected = "expected";155			int expectedNumberOfTimes = 0;156			var foo = Mock.Create<IFoo>();157			var argumentOne = Mock.Create<IArgument>();158			var argumentTwo = Mock.Create<IArgument>();159			Mock.Arrange(() => argumentOne.Name).Returns(expected);160			Mock.Arrange(() => foo.TakeArgument(Arg.IsAny<IArgument>())).DoInstead((IArgument argument) =>161			{162				if (argumentOne == argument) { expectedNumberOfTimes++; }163			});164			foo.TakeArgument(argumentOne);165			foo.TakeArgument(argumentTwo);166			Mock.Assert(() => foo.TakeArgument(Arg.Matches<IArgument>(x => x.Name == expected)), Occurs.Exactly(expectedNumberOfTimes));167		}168		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]169		public void ShouldMatchNullInPredicate()170		{171			var mock = Mock.Create<IFoo>();172			Mock.Arrange(() => mock.Echo(Arg.Matches<string>(s => s == null))).Returns("null");173			Assert.Equal("null", mock.Echo(null));174		}175		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]176		public void ShouldApplyIgnoreInstanceToAllMockInstances()177		{178			var mock = Mock.Create<IFoo>();179			Mock.Arrange(() => mock.Echo(5)).IgnoreInstance().Returns(5);180			var differentMock = Mock.Create<IFoo>();181			Assert.Equal(5, differentMock.Echo(5));182		}183		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]184		public void ShouldInferIgnoreInstanceFromNewExpression()185		{186			Mock.Arrange(() => new Foo().Echo(5)).Returns(5);187			var differentMock = Mock.Create<Foo>();188			Assert.Equal(5, differentMock.Echo(5));189		}190		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]191		public void ShouldInferIgnoreInstanceFromNullCastToType()192		{193			Mock.Arrange(() => ((Foo)null).Echo(5)).Returns(5);194			var differentMock = Mock.Create<Foo>();195			Assert.Equal(5, differentMock.Echo(5));196		}197		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]198		public void ShouldInferIgnoreInstanceFromNullTryCastToType()199		{200			Mock.Arrange(() => (null as Foo).Echo(5)).Returns(5);201			var differentMock = Mock.Create<Foo>();202			Assert.Equal(5, differentMock.Echo(5));203		}204		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]205		public void ShouldInferIgnoreInstanceFromTargetPatternContainingCasts()206		{207			Mock.Arrange(() => (new Echoer() as IEchoer).Echo(5)).Returns(5);208			var mock = Mock.Create<IEchoer>();209			Assert.Equal(5, mock.Echo(5));210		}211		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]212		public void ShouldMatchBoxedStructWithAny()213		{214			var mock = Mock.Create<IEchoer>();215			Mock.Arrange(() => mock.Echo(Arg.IsAny<DateTime>())).OccursOnce();216			mock.Echo(DateTime.Now);217			Mock.Assert(mock);218		}219		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]220		public void ShouldNotMatchBoxedStructWithNull()221		{222			var mock = Mock.Create<IEchoer>();223			Mock.Arrange(() => mock.Echo(Arg.IsAny<DateTime>())).Throws<AssertionException>("Expected");224			mock.Echo(null);225		}226		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]227		public void ShouldMatchDerivedTypeWithAny()228		{229			var mock = Mock.Create<IEchoer>();230			Mock.Arrange(() => mock.Echo(Arg.IsAny<IEchoer>())).Occurs(2);231			mock.Echo(mock);232			mock.Echo(null);233			Mock.Assert(mock);234		}235		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]236		public void ShouldMatchRangeIntersection()237		{238			var mock = Mock.Create<IEchoer>();239			Mock.Arrange(() => mock.Echo(Arg.IsInRange(10, 20, RangeKind.Inclusive))).DoNothing().OccursNever();240			Mock.Arrange(() => mock.Echo(Arg.IsInRange(100, 200, RangeKind.Inclusive))).DoNothing().OccursOnce();241			Mock.Assert(() => mock.Echo(Arg.IsInRange(10, 50, RangeKind.Inclusive)));242			Assert.Throws<AssertionException>(() => Mock.Assert(() => mock.Echo(Arg.IsInRange(10, 200, RangeKind.Inclusive))));243		}244		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]245		public void ShouldCompareBuiltinCollectionArgumentsElementwise()246		{247			string expected = "bar";248			string argument = "foo";249			var target = Mock.Create<IParams>();250			Mock.Arrange(() => target.ExecuteArray(new string[] { argument, "baz" })).Returns(expected);251			string ret = target.ExecuteArray(new string[] { argument, "baz" });252			Assert.Equal(expected, ret);253			Mock.Arrange(() => target.ExecuteArray(new List<string> { argument, "baz" })).Returns(expected);254			ret = target.ExecuteArray(new List<string> { argument, "baz" });255			Assert.Equal(expected, ret);256		}257		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]258		public void ShouldMatchUserDefinedColletionArgumentsByReference()259		{260			var target = Mock.Create<IParams>();261			var s1 = new StringVector();262			var s2 = new StringVector();263			Mock.Arrange(() => target.ExecuteArray(s1)).Returns("1");264			Mock.Arrange(() => target.ExecuteArray(s2)).Returns("2");265			Assert.Equal("1", target.ExecuteArray(s1));266			Assert.Equal("2", target.ExecuteArray(s2));267		}268		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]269		public void ShouldNotMatchUserDefinedColletionArgumentsWithBuiltinCollectionElementwise()270		{271			var target = Mock.Create<IParams>();272			var s1 = new StringVector();273			Mock.Arrange(() => target.ExecuteArray(s1)).Returns("1");274			Assert.Equal("", target.ExecuteArray(new string[0]));275		}276		public class StringVector : ICollection<string>277		{278			#region ICollection<string>279			public void Add(string item)280			{281				throw new InvalidOperationException();282			}283			public void Clear()284			{285				throw new InvalidOperationException();286			}287			public bool Contains(string item)288			{289				throw new InvalidOperationException();290			}291			public void CopyTo(string[] array, int arrayIndex)292			{293				throw new InvalidOperationException();294			}295			public int Count296			{297				get { throw new InvalidOperationException(); }298			}299			public bool IsReadOnly300			{301				get { throw new InvalidOperationException(); }302			}303			public bool Remove(string item)304			{305				throw new InvalidOperationException();306			}307			public IEnumerator<string> GetEnumerator()308			{309				throw new InvalidOperationException();310			}311			System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()312			{313				throw new InvalidOperationException();314			}315			#endregion316		}317		public interface IParams318		{319			string ExecuteArray(IEnumerable<string> arg);320		}321		public class Entity322		{323			public string Prop1 { get; set; }324			public string Prop2 { get; set; }325		}326		public interface IEchoer327		{328			object Echo(object a);329		}330		public class Echoer : IEchoer331		{332			public object Echo(object a)333			{334				throw new NotImplementedException();335			}336		}337		public class Foo338		{339			public virtual int Echo(int? intValue)340			{341				return intValue.Value;342			}343			public virtual void ExeuteObject(Foo foo, Dummy dummy)344			{345			}346			public virtual Entity GetByID(int id, params Expression<Func<Entity, object>>[] args)347			{348				return null;349			}350			public Foo GetSelf()351			{352				throw new NotImplementedException();353			}354			public Foo Self355			{356				get { throw new NotImplementedException(); }357			}358		}359		public class Dummy360		{361		}362		public interface IArgument363		{364			string Name { get; }365		}366		public interface IFoo367		{368			string Echo(string argument);369			int Echo(int intArg);370			int Add(int[] args);371			int CheckMe(IFoo foo);372			void Submit<T>(string param1, Func<T, string> func);373			void Submit<T, T1>(Func<T, T1, string> func);374			void TakeArgument(IArgument argument);375		}376		public class FakeMe377		{378			public virtual string Params(string firstArg, params string[] otherArgs)379			{380				return "I'm real!";381			}382		}383		[TestMethod, TestCategory("Lite"), TestCategory("Matchers"), TestCategory("Params")]384		public void ShouldWrapStringNullOrEmptyMatcherInParamsMatcher()385		{386			var mock = Mock.Create<FakeMe>();387			const string iMFake = "I'm Fake";388			string only = "only";389			Mock.Arrange(() => mock.Params(only, Arg.NullOrEmpty)).Returns(iMFake);390			var actual = mock.Params(only, string.Empty);391			Assert.Equal(iMFake, actual);392		}393		public interface IRequest394		{395			string Method { get; set; }396			string GetResponse();397		}398		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]399		public void ShouldConsiderWhenClause()400		{401			var mock = Mock.Create<IRequest>();402			Mock.Arrange(() => mock.GetResponse()).When(() => mock.Method == "GET").OccursOnce();403			Mock.Arrange(() => mock.GetResponse()).When(() => mock.Method == "POST").OccursOnce();404			Assert.Throws<AssertionException>(() => Mock.Assert(mock));405			mock.Method = "GET";406			mock.GetResponse();407			mock.Method = "POST";408			mock.GetResponse();409			Mock.Assert(mock);410		}411		[TestMethod, TestCategory("Lite"), TestCategory("Matchers")]412		public void ShouldDisregardMethodArgumentsInWhenClause()413		{414			var mock = Mock.Create<IFoo>(Behavior.Loose);415			bool execute = false;416			Mock.Arrange(() => mock.Echo(Arg.AnyString)).When(() => execute).Returns("aaa");417			Assert.Null(mock.Echo("xxx"));418			execute = true;419			Assert.Equal("aaa", mock.Echo("xxx"));420		}421		[TestMethod, TestCategory("Lite"), TestCategory("Matchers"), TestCategory("Assertion")]422		public void ShouldAssertUsingCustomMatcherOnConcreteInstance()423		{424			var mock = Mock.Create<IComparer<int>>();425			mock.Compare(1, 5);426			mock.Compare(2, 2);427			mock.Compare(1, 1);428			mock.Compare(3, 1);429			var mock2 = Mock.Create<IComparer<int>>();430			mock2.Compare(5, 5);431			Mock.Assert(() => mock.Compare(0, 0),432				Args.Matching((int a, int b) => a == b),433				Occurs.Exactly(2));434		}435		[TestMethod, TestCategory("Lite"), TestCategory("Matchers"), TestCategory("Assertion")]436		public void ShouldAssertUsingCustomMatcherOnAnyInstance()437		{438			var mock = Mock.Create<IComparer<int>>();439			mock.Compare(1, 5);440			mock.Compare(2, 2);441			mock.Compare(1, 1);442			mock.Compare(3, 1);443			var mock2 = Mock.Create<IComparer<int>>();444			mock2.Compare(5, 5);445			Mock.Assert(() => mock.Compare(0, 0),446				Args.Matching((IComparer<int> _this, int a, int b) => a == b && _this != null),447				Occurs.Exactly(3));448		}449	}450}...RecursiveFixture.cs
Source: RecursiveFixture.cs 
...296	}297	[TestClass]298	public class RecursiveMockRepositoryInheritance299	{300		public interface IDataItem301		{302			int Id { get; }303		}304		public interface IDataProcessor305		{306			IDataItem Item { get; }307		}308		private IDataProcessor mock;309#if XUNIT310		public RecursiveMockRepositoryInheritance()311		{312			BeforeEach();313		}314#endif315		[TestInitialize]316		public void BeforeEach()317		{318			mock = Mock.Create<IDataProcessor>();319		}320		[TestMethod, TestCategory("Lite"), TestCategory("MockingContext"), TestCategory("Recursive")]321		public void ShouldSetUseContextualRepositoryForRecursiveMock()322		{323			Mock.Arrange(() => mock.Item.Id).Returns(5);324			Assert.Equal(5, mock.Item.Id);325		}326	}327}...Item
Using AI Code Generation
1using Telerik.JustMock;2using Telerik.JustMock.Helpers;3using System;4using System.Collections.Generic;5using System.Linq;6using System.Text;7using System.Threading.Tasks;8{9    {10        static void Main(string[] args)11        {12            var baz = Mock.Create<Baz>();13            baz.Arrange(x => x.Item[0]).Returns(1);14            Console.WriteLine(baz.Item[0]);15            Console.ReadLine();16        }17    }18}Item
Using AI Code Generation
1using Telerik.JustMock.Tests;2{3    {4        public void Bar()5        {6            var baz = new Baz();7            baz.Item[0] = 1;8        }9    }10}11{12    public void Bar()13    {14        var baz = new Baz();15        Mock.Arrange(() => baz.Item[0]).Returns(1);16    }17}18{19    public void Bar()20    {21        var baz = new Baz();22        Mock.Arrange(() => baz.Item[0]).Returns(1);23    }24}Item
Using AI Code Generation
1using System;2using System.Linq;3using Telerik.JustMock;4using Telerik.JustMock.Helpers;5using Telerik.JustMock.Tests;6{7    {8        public static void Main()9        {10            var mock = Mock.Create<Baz>();11            Mock.Arrange(() => mock.Item(Arg.AnyString)).Returns("Item");12            Console.WriteLine(mock.Item("some string"));13        }14    }15}Item
Using AI Code Generation
1var baz = Mock.Create<Baz>();2Mock.Arrange(() => baz.Item[1]).Returns(10);3Assert.AreEqual(10, baz.Item[1]);4var baz = Mock.Create<Baz>();5Mock.Arrange(() => baz.Item[1]).Returns(10);6Assert.AreEqual(10, baz.Item[1]);7var baz = Mock.Create<Baz>();8Mock.Arrange(() => baz.Item[1]).Returns(10);9Assert.AreEqual(10, baz.Item[1]);10var baz = Mock.Create<Baz>();11Mock.Arrange(() => baz.Item[1]).Returns(10);12Assert.AreEqual(10, baz.Item[1]);13var baz = Mock.Create<Baz>();14Mock.Arrange(() => baz.Item[1]).Returns(10);15Assert.AreEqual(10, baz.Item[1]);16var baz = Mock.Create<Baz>();17Mock.Arrange(() => baz.Item[1]).Returns(10);18Assert.AreEqual(10, baz.Item[1]);19var baz = Mock.Create<Baz>();20Mock.Arrange(() => baz.Item[1]).Returns(10);21Assert.AreEqual(10, baz.Item[1]);Item
Using AI Code Generation
1var mock = Mock.Create<Baz>();2Mock.Arrange(() => mock.Item[Arg.AnyInt]).Returns(5);3var result = mock.Item[1];4Assert.AreEqual(5, result);5var mock = Mock.Create<Baz>();6Mock.Arrange(() => mock.Item[Arg.AnyInt]).Returns(5);7var result = mock.Item[2];8Assert.AreEqual(5, result);9{10    {11        get { return 0; }12    }13}14{15    public int DoSomething(Foo foo)16    {17        var result = foo[1];18        return result;19    }20}21public void MockingContextTest()22{23    using (MockingContext ctx = new MockingContext())24    {25        var mock = Mock.Create<Foo>();26        Mock.Arrange(() => mock[Arg.AnyInt]).Returns(5);27        var bar = new Bar();28        var result = bar.DoSomething(mock);29        Assert.AreEqual(5, result);30    }31}Item
Using AI Code Generation
1var baz = Mock.Create<Baz>();2Mock.Arrange(() => baz.Item(Arg.AnyString)).Returns("test");3var result = baz.Item("test");4Assert.AreEqual("test", result);5var bar = Mock.Create<Bar>();6Mock.Arrange(() => bar.Item(Arg.AnyString)).Returns("test");7var result = bar.Item("test");8Assert.AreEqual("test", result);9var baz = Mock.Create<Baz>();10Mock.Arrange(() => baz.Item(Arg.AnyString)).Returns("test");11var result = baz.Item("test");12Assert.AreEqual("test", result);13var bar = Mock.Create<Bar>();14Mock.Arrange(() => bar.Item(Arg.AnyString)).Returns("test");15var result = bar.Item("test");16Assert.AreEqual("test", result);17var baz = Mock.Create<Baz>();18Mock.Arrange(() => baz.Item(Arg.AnyString)).Returns("test");19var result = baz.Item("test");20Assert.AreEqual("test", result);21var bar = Mock.Create<Bar>();22Mock.Arrange(() => bar.Item(Arg.AnyString)).Returns("test");23var result = bar.Item("test");24Assert.AreEqual("test", result);25var baz = Mock.Create<Baz>();26Mock.Arrange(() => baz.Item(Arg.AnyString)).Returns("test");27var result = baz.Item("test");28Assert.AreEqual("test", result);29var bar = Mock.Create<Bar>();30Mock.Arrange(() => bar.Item(Arg.AnyString)).Returns("test");31var result = bar.Item("test");32Assert.AreEqual("test", result);Item
Using AI Code Generation
1C# VB Copy public class Baz { public string Item { get ; set ; } }2C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.Arrange(() => mock.Item).Returns( "mocked" ); Assert.AreEqual( "mocked" , mock.Item); }3C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.Arrange(() => mock[ "item" ]).Returns( "mocked" ); Assert.AreEqual( "mocked" , mock[ "item" ]); }4C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.Arrange(() => mock[ 1 ]).Returns( "mocked" ); Assert.AreEqual( "mocked" , mock[ 1 ]); }5C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.Arrange(() => mock[ Arg.IsAny< string >()]).Returns( "mocked" ); Assert.AreEqual( "mocked" , mock[ "item" ]); }6C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.Arrange(() => mock[ Arg.IsAny< int >()]).Returns( "mocked" ); Assert.AreEqual( "mocked" , mock[ 1 ]); }7C# VB Copy [TestMethod] public void MockItemMethod() { var mock = Mock.Create<Baz>(); Mock.ArrangeCheck out the latest blogs from LambdaTest on this topic:
Greetings folks! With the new year finally upon us, we’re excited to announce a collection of brand-new product updates. At LambdaTest, we strive to provide you with a comprehensive test orchestration and execution platform to ensure the ultimate web and mobile experience.
Having a good web design can empower business and make your brand stand out. According to a survey by Top Design Firms, 50% of users believe that website design is crucial to an organization’s overall brand. Therefore, businesses should prioritize website design to meet customer expectations and build their brand identity. Your website is the face of your business, so it’s important that it’s updated regularly as per the current web design trends.
Hey everyone! We hope you had a great Hacktober. At LambdaTest, we thrive to bring you the best with each update. Our engineering and tech teams work at lightning speed to deliver you a seamless testing experience.
The best agile teams are built from people who work together as one unit, where each team member has both the technical and the personal skills to allow the team to become self-organized, cross-functional, and self-motivated. These are all big words that I hear in almost every agile project. Still, the criteria to make a fantastic agile team are practically impossible to achieve without one major factor: motivation towards a common goal.
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!!
