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;