public void Mocks_inherit_custom_default_value_provider_from_MockRepository() { var customDefaultValueProvider = new ConstantDefaultValueProvider(null); var mockRepository = new MockRepository(MockBehavior.Default) { DefaultValueProvider = customDefaultValueProvider }; var mock = mockRepository.Create <IFoo>(); Assert.Equal(DefaultValue.Custom, mock.DefaultValue); Assert.Same(customDefaultValueProvider, mock.DefaultValueProvider); }
public void Custom_DefaultValueProvider_gets_invoked() { const int expectedReturnValue = 42; var constantDefaultValueProvider = new ConstantDefaultValueProvider(expectedReturnValue); var mock = new Mock <IFoo>() { DefaultValueProvider = constantDefaultValueProvider }; var actualReturnValue = mock.Object.GetValue(); Assert.Equal(expectedReturnValue, actualReturnValue); }
public void FluentMockContext_properly_restores_custom_default_value_provider() { var customDefaultValueProvider = new ConstantDefaultValueProvider(42); var mock = new Mock <IFoo>() { DefaultValueProvider = customDefaultValueProvider }; mock.VerifySet(m => m.Inner.Value = 1, Times.Never); // ^^^^^^^^^^^^^^^^^^^^^^ // Moq has to execute this action to analyze what is being set. Because this is a multi-dot expression, // it temporarily switches to DefaultValue.Mock. Once it's done, it should switch back to the one we // set up above. Assert.Same(customDefaultValueProvider, mock.DefaultValueProvider); }
public void Inner_mocks_inherit_custom_default_value_provider_from_outer_mock() { const int expectedReturnValue = 42; var customDefaultValueProvider = new ConstantDefaultValueProvider(expectedReturnValue); var outerMock = new Mock <IFoo>() { DefaultValueProvider = customDefaultValueProvider }; outerMock.Setup(om => om.Inner.GetValues()); // we don't care about GetValues, all we want here is a multi-dot expression var inner = outerMock.Object.Inner; var innerMock = Mock.Get(inner); Assert.Same(outerMock.DefaultValueProvider, innerMock.DefaultValueProvider); var actualReturnValue = inner.GetValue(); Assert.Equal(expectedReturnValue, actualReturnValue); }
public void Custom_default_value_provider_does_not_interfere_with_recursive_mocking() { var nullDefaultValueProvider = new ConstantDefaultValueProvider(null); var outerMock = new Mock <IFoo>() { DefaultValueProvider = nullDefaultValueProvider }; outerMock.Setup(om => om.Inner.GetValue()); // ^^^^^^ // If the custom default value provider were used to determine this value, // then it would be `null` instead of a mocked `IFoo` instance. Multi-dot expressions // must always use `MockDefaultValueProvider`, regardless of the outermost mock's // configured default value provider. var inner = outerMock.Object.Inner; Assert.NotNull(inner); Assert.IsAssignableFrom <IFoo>(inner); }
public void Custom_DefaultValueProvider_implementations_have_Kind_Custom() { var customDefaultValueProvider = new ConstantDefaultValueProvider(null); Assert.Equal(DefaultValue.Custom, customDefaultValueProvider.Kind); }