Я не могу понять, как провести модульное тестирование этого класса 'Invoke
-Метод:
Option Strict On
Imports System.Windows.Interactivity
Public Class ViewErrorCounterAction
Inherits TriggerAction(Of DependencyObject)
Public Shared ReadOnly ViewErrorCounterProperty As DependencyProperty = DependencyProperty.Register("ViewErrorCounter",GetType(Integer),GetType(ViewErrorCounterAction))
Sub New()
ViewErrorCounter = 0
End Sub
Public Property ViewErrorCounter As Integer
Get
Return CType(GetValue(ViewErrorCounterProperty), Integer)
End Get
Set
SetValue(ViewErrorCounterProperty, Value)
End Set
End Property
Protected Overrides Sub Invoke(parameter As Object)
Dim e = CType(parameter, ValidationErrorEventArgs)
If (e.Action = ValidationErrorEventAction.Added) Then
ViewErrorCounter = ViewErrorCounter + 1
ElseIf (e.Action = ValidationErrorEventAction.Removed) Then
ViewErrorCounter = ViewErrorCounter - 1
End If
End Sub
End Class
Мне удалось вызвать метод invoke, а также передать правильный параметр с помощью этого кода, но я боролся с созданием объекта ValidationErrorEventArgs, поскольку его конструктор является внутренним:
Sub Invoke_ValidationerrorEventEinAufruf_ErrorCounterIst1()
Dim _viewErrorCounterAction = New ViewErrorCounterAction
dim _manualTrigger = New ManualTrigger
_manualTrigger.Actions.Add(_viewErrorCounterAction)
'This line won't work because the constructor is internal
Dim ev = New ValidationErrorEventArgs(New ValidationError(Nothing, Nothing), ValidationErrorEventAction.Added)
_manualTrigger.Invoke(ev)
Dim result = _viewErrorCounterAction.ViewErrorCounter
Assert.That(result, [Is].EqualTo(1))
End Sub
'with help of https://stackoverflow.com/a/12977944/2582968
Public Class ManualTrigger
Inherits Interactivity.TriggerBase(Of DependencyObject)
Public Sub Invoke(parameter As Object)
Me.InvokeActions(parameter)
End Sub
End Class
Я экспериментировал с Activator.CreateInstance, чтобы создать ValidationErrorEventArgs, но пока не увенчался успехом. Поскольку вся эта история с активатором кажется мне далекой от сложности обычного модульного теста, я был бы признателен за любые советы о том, как лучше всего протестировать этот код. Если активатор - мой единственный вариант, я буду рад некоторой помощи по созданию этого ValidationErrorEventArgs-Object.