Пример #1
0
        public TestModes DetermineTestMode(params object[] requestArgs)
        {
            var requestedMode = TestFlaskContext.RequestedMode;

            if (requestedMode == TestModes.Record || requestedMode == TestModes.NoMock)
            {
                return(requestedMode);
            }
            else
            {
                if (TestFlaskContext.LoadedStep == null && TestFlaskContext.CurrentDepth == 1)
                {
                    TestFlaskContext.LoadedStep = api.GetStep(requestedInvocation.StepNo);
                }

                Invocation existingInvocation = TestFlaskContext.GetInvocation(requestedInvocation.InstanceHashCode);

                if (existingInvocation != null)
                {
                    if (requestedMode == TestModes.Assert)
                    {
                        mustPersistAssertionResult = (TestFlaskContext.CurrentDepth == 1);
                    }
                    //lookup existing invocation and determine test mode
                    return(existingInvocation.IsReplayable ? TestModes.Play : TestModes.NoMock);
                }
                else
                {
                    //cannot find same invocation
                    return(TestModes.NoMock);
                }
            }
        }
Пример #2
0
        protected void EndInvocation(object result = null)
        {
            TestFlaskContext.CurrentDepth--;

            if (mustPersistAssertionResult && result != null)
            {
                Invocation rootInvocation = TestFlaskContext.GetRootInvocation();
                rootInvocation.AssertionResult = JsonConvert.SerializeObject(result);
                api.PutInvocation(rootInvocation); //persist assertion result
            }
        }
Пример #3
0
        public void Play(params object[] requestArgs)
        {
            var loadedInvocation = TestFlaskContext.GetInvocation(requestedInvocation.InstanceHashCode);

            if (!loadedInvocation.IsFaulted)
            {
                EndInvocation();
            }
            else
            {
                var exception = (Exception)JsonConvert.DeserializeObject(loadedInvocation.Exception, Type.GetType(loadedInvocation.ExceptionType));
                EndInvocation(exception);
                throw exception;
            }
        }