Skip to content

Commit 5f2895b

Browse files
committed
Support CallBase and DefaultValue configuration of Moq.MockFactory.
1 parent ccb1717 commit 5f2895b

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

src/Ninject.MockingKernel.Moq.Test/DefaultMockRepositoryProviderTest.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public void CreatesMocksWithDefaultBehaviorByDefault()
3636
var mock = testee.Instance.Create<IDummyService>();
3737

3838
mock.Behavior.Should().Be(MockBehavior.Default);
39+
mock.CallBase.Should().Be(false);
40+
mock.DefaultValue.Should().Be(DefaultValue.Empty);
3941
}
4042

4143
[Fact]
@@ -48,6 +50,28 @@ public void CreatesMocksWithTheConfiguredMockBehavior()
4850
var mock = testee.Instance.Create<IDummyService>();
4951
mock.Behavior.Should().Be(MockBehavior.Strict);
5052
}
53+
54+
[Fact]
55+
public void CreatesMocksWithTheConfiguredCallBaseBehavior()
56+
{
57+
var settings = new NinjectSettings();
58+
settings.SetMockCallBase(true);
59+
var testee = new DefaultMockRepositoryProvider { Settings = settings };
60+
61+
var mock = testee.Instance.Create<IDummyService>();
62+
mock.CallBase.Should().Be(true);
63+
}
64+
65+
[Fact]
66+
public void CreatesMocksWithTheConfiguredDefaultReturnValue()
67+
{
68+
var settings = new NinjectSettings();
69+
settings.SetMockDefaultValue(DefaultValue.Mock);
70+
var testee = new DefaultMockRepositoryProvider { Settings = settings };
71+
72+
var mock = testee.Instance.Create<IDummyService>();
73+
mock.DefaultValue.Should().Be(DefaultValue.Mock);
74+
}
5175
}
5276
}
5377
#endif

src/Ninject.MockingKernel.Moq/DefaultMockRepositoryProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ public MockRepository Instance
6060
if (this.instance == null)
6161
{
6262
this.instance = new MockRepository(this.Settings.GetMockBehavior());
63+
this.instance.CallBase = this.Settings.GetMockCallBase();
64+
this.instance.DefaultValue = this.Settings.GetMockDefaultValue();
6365
}
6466

6567
return this.instance;

src/Ninject.MockingKernel.Moq/NinjectSettingsExtensions.cs

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,16 @@ public static class NinjectSettingsExtensions
3333
/// </summary>
3434
private const string MockBehaviorSettingsKey = "MockBehavior";
3535

36+
/// <summary>
37+
/// The key used to store the mock call base behavior in the ninject settings.
38+
/// </summary>
39+
private const string MockCallBase = "MockCallBase";
40+
41+
/// <summary>
42+
/// The key used to store the mock default return value in the ninject settings.
43+
/// </summary>
44+
private const string MockDefaultValue = "MockDefaultValue";
45+
3646
/// <summary>
3747
/// Sets the mock behavior.
3848
/// </summary>
@@ -52,5 +62,45 @@ public static MockBehavior GetMockBehavior(this INinjectSettings settings)
5262
{
5363
return settings.Get(MockBehaviorSettingsKey, MockBehavior.Default);
5464
}
65+
66+
/// <summary>
67+
/// Sets the mock call base behavior.
68+
/// </summary>
69+
/// <param name="settings">The ninject settings.</param>
70+
/// <param name="mockCallBase">The mock call base behavior.</param>
71+
public static void SetMockCallBase(this INinjectSettings settings, bool mockCallBase)
72+
{
73+
settings.Set(MockCallBase, mockCallBase);
74+
}
75+
76+
/// <summary>
77+
/// Gets the mock call base behavior.
78+
/// </summary>
79+
/// <param name="settings">The ninject settings.</param>
80+
/// <returns>The configured mock call base behavior.</returns>
81+
public static bool GetMockCallBase(this INinjectSettings settings)
82+
{
83+
return settings.Get(MockCallBase, false);
84+
}
85+
86+
/// <summary>
87+
/// Sets the mock default return value.
88+
/// </summary>
89+
/// <param name="settings">The ninject settings.</param>
90+
/// <param name="mockDefaultValue">The mock default return value.</param>
91+
public static void SetMockDefaultValue(this INinjectSettings settings, DefaultValue mockDefaultValue)
92+
{
93+
settings.Set(MockDefaultValue, mockDefaultValue);
94+
}
95+
96+
/// <summary>
97+
/// Gets the mock default return value.
98+
/// </summary>
99+
/// <param name="settings">The ninject settings.</param>
100+
/// <returns>The configured mock default return value.</returns>
101+
public static DefaultValue GetMockDefaultValue(this INinjectSettings settings)
102+
{
103+
return settings.Get(MockDefaultValue, DefaultValue.Empty);
104+
}
55105
}
56106
}

0 commit comments

Comments
 (0)