TypeMock入门笔记代码---数据库操作对象mock

数据库对象操作代码 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没有这样的限制。

你可能感兴趣的:(type)