예제 #1
0
        public void MultipleCachedInvocationsYieldsSingleActualInvocation()
        {
            var instance = new ForTestingPurposes();
            var proxy    = new PerInstanceAdapter <IForTestingPurposes>(For.Ever())
                           .Adapt(instance);

            proxy.MethodCall(0, "zero");
            proxy.MethodCall(0, "zero");
            proxy.MethodCall(0, "zero");

            Assert.Equal <uint>(1, instance.MethodCallInvocationCount);
        }
        public void SerializedResultMatchesInvokedMethodResult()
        {
            var    eventCount       = 0;
            object serializedResult = null;

            var proxy = new PerInstanceAdapter <IForTestingPurposes>
                        (
                Process.Lean(EventProcessor),
                CaptureOptions.SerializedResult
                        )
                        .Adapt(new ForTestingPurposes());

            var result = proxy.MethodCall(0, "zero");

            Assert.Equal(1, eventCount);
            Assert.Equal(result, JsonConvert.DeserializeObject((string)serializedResult));

            void EventProcessor(IDictionary <string, object> @event)
            {
                eventCount++;
                serializedResult = @event[nameof(CaptureOptions.SerializedResult)];
            }
        }
        public void DeclaringTypeMatchesInvokedMethod()
        {
            var    eventCount = 0;
            object typeName   = null;

            var proxy = new PerInstanceAdapter <IForTestingPurposes>
                        (
                Process.Lean(EventProcessor),
                CaptureOptions.DeclaringTypeName
                        )
                        .Adapt(new ForTestingPurposes());

            proxy.MethodCall(0, "zero");

            Assert.Equal(1, eventCount);
            Assert.Equal(typeof(ForTestingPurposes).FullName, typeName);

            void EventProcessor(IDictionary <string, object> @event)
            {
                eventCount++;
                typeName = @event[nameof(CaptureOptions.DeclaringTypeName)];
            }
        }