| 

.NET C# Java Javascript Exception

3
Ich versuche grad einen NUnit-Test zu schreiben, der eine Server-Assembly auf logische Korrektheit prüfen soll. Diese wird direkt instanziert und aufgerufen.

Innerhalb der Methode ist aber ein Session-Objekt, was ausgewertet wird - dies wird aber nur instanziert, wenn tatsächlich eine Client-Server-Verbindung besteht.

Wie kann ich das entsprechen testen, damit es keine Fehler gibt. Es folgen die relevanten Teile meines Code:

BaseClass
Public MustInherit Class ClassBase

Implements ISessionService


#Region "Sessioninformationen"

Public ReadOnly Property CurrentSession As ServerSession Implements ISessionService.CurrentSession
Get
Dim _Session As ServerSession = ServerSession.CurrentSession
Return _Session
End Get
End Property

Public ReadOnly Property SessionClientAddress As String Implements ISessionService.SessionClientAddress
Get
Return CurrentSession.ClientAddress
End Get
End Property

#End Region

End Class


Public Class WorkManagement

Inherits ClassBase
Public Function CreateNewWork(WorkEntity As Entities.Works.Work) As ServerResult Implements Common.Application.IInventuresManagement.CreateNewWork
Dim _result As New ServerResult

NLOGLOGGER.Info("New Work will create in database [IP=" & SessionClientAddress & ":" & SessionIdentityName & "]")

...

End Function


NUnit-Testmethode
<Test()>
Public Sub CreateNewWork()

Dim MockFac As New MockFactory
Dim Invent As Mock(Of WorkManagement)
Invent = MockFac.CreateMock(Of WorkManagement)(WorkConn)
Invent.Expects.Any.GetProperty(Function(Work) Work.SessionClientAddress).WillReturn("127.0.0.1")
Invent.Expects.Any.GetProperty(Function(Work) Work.SessionIdentityName).WillReturn("NUnit")

...

WorkGuid = Invent.MockObject.CreateNewWork(newWork).ReturnValue
Assert.AreNotEqual(WorkGuid , Nothing)
Assert.AreNotEqual(WorkGuid , Guid.Empty.ToString)

End Sub


Wenn ich durch den Code von CreateNewWork debugge, wird immer versucht die Session zu lesen und nicht der NMock3-Wert - obwohl ich bei der Vorschau in VS2010 (wenn man mit der Maus auf das Invent.MockObject geht), den Wert sehen kann.

Kann mir jemand dabei behilflich sein?
28.10.2013
MyKey0815 1,6k 2 9
Das SUT wird gemockt?
lbm1305 28.10.2013
1 Antwort
0
Lösung: Die Eigenschaften in der BaseClass müssen Overridable gekennzeichnet sein, dann geht´s wie oben beschrieben

Public Overridable ReadOnly Property CurrentSession As ServerSession Implements ISessionService.CurrentSession
Get
Dim _Session As ServerSession = ServerSession.CurrentSession
Return _Session
End Get
End Property

Public Overridable ReadOnly Property SessionClientAddress As String Implements ISessionService.SessionClientAddress
Get
Return CurrentSession.ClientAddress
End Get
End Property
29.10.2013
MyKey0815 1,6k 2 9
Und trotzdem wird das SUT gemockt? Seit wann macht man so etwas?
lbm1305 29.10.2013

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH