Я хочу провести модульное тестирование моей функции StartPro c в классе MyProgram. Мой модульный тест всегда пытается запустить actaul .exe, но я не хочу.
Public Interface IProcess
Function StartProcess(path_to_exe As String) As Process
End Interface
Класс MyProcess, где я определил код для своей функции.
Public Class MyProcess
Implements IProcess
Public Function StartProcess(path_to_exe As String) As Process Implements IRegisafe.StartProcess
Dim proc As New Process
proc.StartInfo.FileName = path_to_exe
Return proc
End Function
End Class
Вот моя программа
Public Class MyProgram
Private _proc As IProcess
Public Sub New(proc As IProcess)
_proc = proc
End Sub
Public Function StartProc(path As String) As Boolean
Try
Dim p As Process = _proc.StartProcess(path)
Return p.Start()
Catch ex As Exception
Console.WriteLine(ex.Message)
Return False
End Try
End Function
End Class
Мой модульный тест выглядит следующим образом.
<TestMethod()> Public Sub StartProc_WhenCanStarted_ShouldTrue()
Dim path As String = "helloWorld.exe"
Dim proc As New Process
proc.StartInfo.FileName = path
Dim mockP As Mock(Of IProcess) = New Mock(Of IProcess)
mockP.Setup(Function(x) x.StartProcess(path)).Returns(proc)
Dim controller = New MyProgram(mockP.Object)
Dim started As Boolean = controller.StartProc(path)
Assert.IsTrue(started)
End Sub
Как запустить модульный тест или пробную функцию () из правильно ли обрабатывать класс?