数据库对象操作代码 VB.net实现
Public Shared Function GetUser(ByVal connectionString As String) As Users
Dim connection As New SqlConnection(connectionString)
Using (connection)
Dim command As New SqlCommand("select UserName from tb_User", connection)
connection.Open()
Dim reader As SqlDataReader = command.ExecuteReader()
reader.Read()
If reader.HasRows Then
Dim user As New Users
user.Name = reader("UserName").ToString
reader.Close()
Return user
End If
reader.Close()
Throw New Exception("Database has no user")
End Using
End Function
mock对象代码
<Test()> _
Public Sub getFackUserObject()
Dim rec As New RecordExpectations
rec = RecorderManager.StartRecording()
Using rec
Dim connection As New SqlConnection(Nothing)
Using connection
Dim command As New SqlCommand(Nothing, Nothing)
connection.Open()
Dim fackreader As SqlDataReader = RecorderManager.CreateMockedObject(GetType(SqlDataReader))
rec.ExpectAndReturn(command.ExecuteReader, fackreader)
rec.ExpectAndReturn(fackreader.Read, False)
rec.ExpectAndReturn(fackreader.HasRows, True)
rec.ExpectAndReturn(fackreader("UserName"), "Gil")
fackreader.Close()
End Using
End Using
Assert.AreEqual("Gil", MockDataBase.GetUser("").Name)
End Sub
Users的实现代码
Public Class Users
Private _name As String
Public Property Name() As String
Get
Return _name
End Get
Set(ByVal Value As String)
_name = Value
End Set
End Property
End Class
今天发现TypeMock很强大,强大到有点难理解。之前有使用过MOQ和NMock,这两个迫使你面相接口编程,而TypeMock没有这样的限制。