diff --git a/Moq.AutoMock.Tests/DescribeWithSelfMock.cs b/Moq.AutoMock.Tests/DescribeWithSelfMock.cs index ce4d5e5..b611337 100644 --- a/Moq.AutoMock.Tests/DescribeWithSelfMock.cs +++ b/Moq.AutoMock.Tests/DescribeWithSelfMock.cs @@ -12,7 +12,7 @@ public void It_can_register_a_custom_default_value_provider_for_a_self_mock_with var mock = mocker.WithSelfMock(defaultValue: DefaultValue.Custom, defaultValueProvider: provider); - Assert.AreEqual(provider, Mock.Get(mock).DefaultValueProvider); + Assert.AreEqual(provider, mock.DefaultValueProvider); } [TestMethod] @@ -24,7 +24,7 @@ public void It_uses_default_value_provider_for_a_self_mock_with_interface() var mock = mocker.WithSelfMock(); - Assert.AreEqual(provider, Mock.Get(mock).DefaultValueProvider); + Assert.AreEqual(provider, mock.DefaultValueProvider); } [TestMethod] @@ -98,5 +98,14 @@ public void It_uses_default_value_provider_for_a_self_mock_with_class_type() Assert.AreEqual(provider, Mock.Get(mock).DefaultValueProvider); } + + [TestMethod] + public void WithSelfMock_returns_mock_of_service() + { + var mocker = new AutoMocker(); + var mockService = mocker.WithSelfMock(); + + Assert.IsInstanceOfType>(mockService); + } } diff --git a/Moq.AutoMock/AutoMocker.cs b/Moq.AutoMock/AutoMocker.cs index 67eb0b9..0a16f9b 100644 --- a/Moq.AutoMock/AutoMocker.cs +++ b/Moq.AutoMock/AutoMocker.cs @@ -304,8 +304,8 @@ public T CreateSelfMock( /// Sets the DefaultValue property on the created Mock. /// The instance that will be used to produce default return values for unexpected invocations. /// Sets the CallBase property on the created Mock. - /// An instance with virtual and abstract members mocked - public TImplementation WithSelfMock( + /// A mock of the service + public Mock WithSelfMock( bool enablePrivate = false, MockBehavior? mockBehavior = null, DefaultValue? defaultValue = null, @@ -320,12 +320,15 @@ public TImplementation WithSelfMock( defaultValue ?? DefaultValue, defaultValueProvider ?? DefaultValueProvider, callBase ?? CallBase); + + Mock serviceMock = selfMock.As(); + WithTypeMap(typeMap => { typeMap[typeof(TImplementation)] = new MockInstance(selfMock); - typeMap[typeof(TService)] = new MockInstance(selfMock.As()); + typeMap[typeof(TService)] = new MockInstance(serviceMock); }); - return selfMock.Object; + return serviceMock; } ///