在使用 VS 2012 的 NUnit 测试下,我有以下对象(来自 Delphi 的简化端口)。
Public Class Class1
Private fLoaded As Boolean
Private fSample As String
Private Sub LoadFromDB()
If (fLoaded) Then
Exit Sub
End If
fLoaded = True
' fDataModule.LoadFromDB(Me)
End Sub
Public Property SampleProp() As String
Get
LoadFromDB()
Return fSample
End Get
Set(ByVal value As String)
fSample = value
End Set
End Property
Public Property Loaded() As Boolean
Get
Return fLoaded
End Get
Set(ByVal value As Boolean)
fLoaded = value
End Set
End Property
End Class
假设该对象在访问其属性时执行按需加载。以下 Nunit 类正在测试该属性。
Imports NUnit.Framework
<TestFixture> _
Public Class TestClass1
<Test()> _
Public Sub TestProperties()
Dim TheClass As Class1
TheClass = New Class1
TheClass.Loaded = True
TheClass.SampleProp = "Sample"
TheClass.Loaded = False
Assert.AreEqual("Sample", TheClass.SampleProp)
End Sub
End Class
发生的问题是,在断言语句上有一个断点,类属性 Loaded 在调试器中显示为 True,而我的任何代码都没有被执行来设置内部变量。最终结果是我的按需加载将无法执行。
是什么改变了房产的价值?在 Delphi 中,使用 DUnit,类属性的行为符合预期。