Exemple #1
0
        public void MockOfMockedClassWithCtorShouldReturnSame()
        {
            Mock <FooWithCtor>    mock   = new Mock <FooWithCtor>(5);
            IMocked <FooWithCtor> mocked = mock.Object as IMocked <FooWithCtor>;

            Assert.Same(mock, mocked.Mock);
        }
Exemple #2
0
        public Mock <T> Mock <T>()
            where T : class
        {
            IMocked <T> obj = (IMocked <T>)Resolve <T>();

            return(obj.Mock);
        }
Exemple #3
0
        public void MockOfMockedInterfaceShouldReturnSame()
        {
            Mock <IFoo>    mock   = new Mock <IFoo>();
            IMocked <IFoo> mocked = mock.Object as IMocked <IFoo>;

            Assert.Same(mock, mocked.Mock);
        }
Exemple #4
0
        public void MockOfMockedClassShouldReturnSame()
        {
            Mock <Foo>    mock   = new Mock <Foo>();
            IMocked <Foo> mocked = mock.Object as IMocked <Foo>;

            Assert.Same(mock, mocked.Mock);
        }
Exemple #5
0
        /// <summary>
        /// Clears any existing behavior (including any setups) and
        /// adds the necessary behaviors to the <paramref name="mocked"/> so
        /// that it behaves as specified by the <paramref name="behavior"/>
        /// enumeration.
        /// </summary>
        /// <remarks>
        /// This method can be used by custom mocks to ensure they have the
        /// same default behaviors as a mock created using <c>Mock.Of{T}</c>.
        /// </remarks>
        public static void SetBehavior(this IMocked mocked, MockBehavior behavior)
        {
            mocked.Mock.Behaviors.Clear();

            mocked.Mock.Behaviors.Add(new MockTrackingBehavior());
            mocked.Mock.Behaviors.Add(new EventBehavior());
            mocked.Mock.Behaviors.Add(new PropertyBehavior {
                SetterRequiresSetup = behavior == MockBehavior.Strict
            });
            mocked.Mock.Behaviors.Add(new DefaultEqualityBehavior());
            mocked.Mock.Behaviors.Add(new RecursiveMockBehavior());

            if (behavior == MockBehavior.Strict)
            {
                mocked.Mock.Behaviors.Add(new StrictMockBehavior());
            }
            else
            {
                mocked.Mock.Behaviors.Add(new DefaultValueBehavior());
            }

            mocked.Mock.State.Set(behavior);
            // Saves the initial set of behaviors, which allows resetting the mock.
            mocked.Mock.State.Set(mocked.Mock.Behaviors.ToArray());
        }
Exemple #6
0
        /// <summary>
        /// Clears any existing behavior (including any setups) and
        /// adds the necessary behaviors to the <paramref name="mocked"/> so
        /// that it behaves as specified by the <paramref name="behavior"/>
        /// enumeration.
        /// </summary>
        /// <remarks>
        /// This method can be used by custom mocks to ensure they have the
        /// same default behaviors as a mock created using <c>Mock.Of{T}</c>.
        /// </remarks>
        public static void Initialize(this IMocked mocked, MockBehavior behavior = MockBehavior.Loose)
        {
            var mock = mocked.Mock;

            mock.Behaviors.Clear();

            mocked.AsMoq().Behavior = behavior;

            mock.Behaviors.Add(new SetupScopeBehavior());
            mock.Behaviors.Add(new MockContextBehavior());
            mock.Behaviors.Add(new ConfigurePipelineBehavior());
            mock.Behaviors.Add(new MockRecordingBehavior());
            mock.Behaviors.Add(new EventBehavior());
            mock.Behaviors.Add(new PropertyBehavior {
                SetterRequiresSetup = behavior == MockBehavior.Strict
            });
            mock.Behaviors.Add(new DefaultEqualityBehavior());
            mock.Behaviors.Add(new RecursiveMockBehavior());
            mock.Behaviors.Add(new CallBaseBehavior());

            // Dynamically configured by the ConfigurePipelineBehavior.
            mock.Behaviors.Add(new StrictMockBehavior());

            var defaultValue = mock.State.GetOrAdd(() => new DefaultValueProvider());

            mock.Behaviors.Add(new DefaultValueBehavior(defaultValue));
            mock.State.Set(defaultValue);
        }
Exemple #7
0
 public DependencyContainer(object obj)
 {
     Obj = obj switch
     {
         null => throw new ArgumentNullException(nameof(obj)),
               IMocked mocked => mocked.Mock, // unpack the mocked object to a mock
               object o => o,
     };
 }
Exemple #8
0
 /// <summary>
 /// Inserts a behavior into the mock behavior pipeline at the specified
 /// index.
 /// </summary>
 public static IMocked InsertBehavior(this IMocked mock, int index, Func <IMethodInvocation, bool> appliesTo, InvokeBehavior behavior, string name = null)
 {
     mock.Mock.Behaviors.Insert(index, MockBehavior.Create(appliesTo, behavior, name));
     return(mock);
 }
Exemple #9
0
 /// <summary>
 /// Adds a behavior to a mock.
 /// </summary>
 public static IMocked AddBehavior(this IMocked mock, Func <IMethodInvocation, bool> appliesTo, InvokeBehavior behavior, string name = null)
 {
     mock.Mock.Behaviors.Add(MockBehavior.Create(appliesTo, behavior, name));
     return(mock);
 }
Exemple #10
0
 public static MockBehavior?GetBehavior(this IMocked mocked)
 => mocked.Mock.State.TryGetValue <MockBehavior>(out var behavior) ? behavior : (MockBehavior?)null;
Exemple #11
0
 /// <summary>
 /// Inserts a behavior into the mock behavior pipeline at the specified
 /// index.
 /// </summary>
 public static IMocked InsertBehavior(this IMocked mock, int index, InvokeBehavior behavior, string name = null)
 {
     mock.Mock.BehaviorFor(MockSetup.Current).Behaviors.Insert(index, new InvocationBehavior(behavior, name));
     return(mock);
 }
Exemple #12
0
 /// <summary>
 /// Adds a behavior to a mock.
 /// </summary>
 public static IMocked AddBehavior(this IMocked mock, InvokeBehavior behavior, string name = null)
 {
     mock.Mock.BehaviorFor(MockSetup.Current).Behaviors.Add(new InvocationBehavior(behavior, name));
     return(mock);
 }
 public void MethodMocked(IMocked mocked)
 {
     mocked.Do();
 }
Exemple #14
0
 /// <summary>
 /// Inserts a behavior into the mock behavior pipeline at the specified
 /// index.
 /// </summary>
 public static void InsertMockBehavior(this IMocked mock, int index, Func <IMethodInvocation, bool> appliesTo, InvokeBehavior behavior)
 {
     mock.Mock.Behaviors.Insert(index, MockBehavior.Create(appliesTo, behavior));
 }
Exemple #15
0
 /// <summary>
 /// Adds a behavior to a mock.
 /// </summary>
 public static void AddMockBehavior(this IMocked mock, Func <IMethodInvocation, bool> appliesTo, InvokeBehavior behavior)
 {
     mock.Mock.Behaviors.Add(MockBehavior.Create(appliesTo, behavior));
 }