public void InvokeMethod_Should_ReturnTrue_Given_TheInvokedMethodReturnsAAssertionResultSuccessfulObject() { GameObject gameObject = UnitTestUtility.CreateGameObject(); ExtensionRunnerBusinessLogic businessLogic = new ExtensionRunnerBusinessLogic(gameObject); Component component = Substitute.For <Component>(); MethodInfo mockedMethodInfo = Substitute.For <MethodInfo>(); object methodInvokeAssertionResult = new AssertionResultSuccessful(); object[] parameters = new object[0]; mockedMethodInfo.Invoke(component, parameters).Returns(methodInvokeAssertionResult); FullMethodDescription methodDescription = Substitute.For <FullMethodDescription>(); methodDescription.Method = mockedMethodInfo; methodDescription.GetFullName().Returns <string>("component.method"); ExtensionRunnerBusinessLogic mockedBusinessLogic = Substitute.For <ExtensionRunnerBusinessLogic>(gameObject); DateTime firstNowDatetime = new DateTime(2017, 05, 01, 00, 00, 00, 000); mockedBusinessLogic.StartDelayTime = firstNowDatetime; DateTime secondNowDatetime = new DateTime(2017, 05, 01, 00, 00, 00, 000); mockedBusinessLogic.DateTimeNow().Returns <DateTime>(secondNowDatetime); mockedBusinessLogic.GetParametersValues(methodDescription).Returns <object[]>(parameters); mockedMethodInfo.Invoke(component, parameters).Returns(methodInvokeAssertionResult); methodDescription.Method = mockedMethodInfo; bool result = businessLogic.InvokeMethod(mockedBusinessLogic, methodDescription, gameObject); Assert.IsTrue(result, "The method InvokeMethod doesn't return the right state"); }
public void RunCycle_Should_PerformTheExpectedCallsForTheFirstMethodInTheListAndReturnTheIndexForTheNextMethod_Given_TheMethodHasNotAConfiguredDelay() { GameObject gameObject = UnitTestUtility.CreateGameObject(); ExtensionRunnerBusinessLogic businessLogic = new ExtensionRunnerBusinessLogic(gameObject); Component component = Substitute.For <Component>(); MethodInfo mockedMethodInfo = Substitute.For <MethodInfo>(); object methodInvokeAssertionResult = new AssertionResultSuccessful(); object[] parameters = new object[0]; mockedMethodInfo.Invoke(component, parameters).Returns(methodInvokeAssertionResult); FullMethodDescription methodDescription = Substitute.For <FullMethodDescription>(); methodDescription.Method = mockedMethodInfo; methodDescription.GetFullName().Returns <string>("component.method"); ExtensionRunnerBusinessLogic mockedBusinessLogic = Substitute.For <ExtensionRunnerBusinessLogic>(gameObject); mockedBusinessLogic.IntegrationTestGameObject = gameObject; List <FullMethodDescription> methodsDescription = new List <FullMethodDescription>(); methodsDescription.Add(methodDescription); methodsDescription.Add(Substitute.For <FullMethodDescription>()); DateTime firstNowDatetime = new DateTime(2017, 05, 01, 00, 00, 00, 000); mockedBusinessLogic.DateTimeNow().Returns <DateTime>(firstNowDatetime); mockedBusinessLogic.InvokeMethod(mockedBusinessLogic, methodDescription, gameObject).Returns <bool>(true); int indexToRun = -1; int newIndexToRun = businessLogic.RunCycle(mockedBusinessLogic, methodsDescription, indexToRun); Received.InOrder(() => { mockedBusinessLogic.DateTimeNow(); mockedBusinessLogic.InvokeMethod(mockedBusinessLogic, methodDescription, gameObject); mockedBusinessLogic.DateTimeNow(); }); Assert.AreEqual(1, newIndexToRun, "The method RunCycle doesn't return the right value"); }