diff --git a/NTestDataBuilder.Tests/Entities/Company.cs b/NTestDataBuilder.Tests/Entities/Company.cs new file mode 100644 index 0000000..df0df22 --- /dev/null +++ b/NTestDataBuilder.Tests/Entities/Company.cs @@ -0,0 +1,16 @@ +namespace NTestDataBuilder.Tests.Entities +{ + public class Company + { + protected Company() { } + + public Company(string name, int employeeCount) + { + Name = name; + EmployeeCount = employeeCount; + } + + public virtual string Name { get; private set; } + public int EmployeeCount { get; private set; } + } +} diff --git a/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj b/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj index 958a685..bfaefae 100644 --- a/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj +++ b/NTestDataBuilder.Tests/NTestDataBuilder.Tests.csproj @@ -54,6 +54,7 @@ + diff --git a/NTestDataBuilder.Tests/ProxyBuilderTests.cs b/NTestDataBuilder.Tests/ProxyBuilderTests.cs index 589bed8..2249ad5 100644 --- a/NTestDataBuilder.Tests/ProxyBuilderTests.cs +++ b/NTestDataBuilder.Tests/ProxyBuilderTests.cs @@ -59,5 +59,21 @@ public void GivenClassToProxyWithMultiplePropertyValues_WhenBuildingProxy_Return Assert.That(proxy.LastName, Is.EqualTo("LastName")); Assert.That(proxy.YearJoined, Is.EqualTo(1)); } + + [Test] + public void GivenClassWithSomeVirtualProperties_WhenBuildingProxy_ThenOnlyVirtualMembersAreProxied() + { + var proxyBuilder = new ProxyBuilder(new Dictionary() + { + {"Name", "Vandelay Industries"}, + {"EmployeeCount", 100} + }); + + var proxy = proxyBuilder.Build(); + + Assert.That(proxy.Name, Is.EqualTo("Vandelay Industries")); + Assert.That(proxy.EmployeeCount, Is.EqualTo(0)); + } } } + \ No newline at end of file diff --git a/NTestDataBuilder/ProxyBuilder.cs b/NTestDataBuilder/ProxyBuilder.cs index ab42dbc..47d6799 100644 --- a/NTestDataBuilder/ProxyBuilder.cs +++ b/NTestDataBuilder/ProxyBuilder.cs @@ -32,7 +32,8 @@ public T Build() var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var property in properties.Where(property => _properties.ContainsKey(property.Name))) { - property.GetValue(proxy, null).Returns(_properties[property.Name]); + if (property.GetGetMethod().IsVirtual) + property.GetValue(proxy, null).Returns(_properties[property.Name]); } return proxy;