Когда я запускаю модульный тест ниже, он не проходит и возвращает это сообщение:
System.ArgumentException: не удается вызвать событие с указанным
аргументы. Используйте Raise.Event <Action'1>
(CWaveform []), чтобы вызвать это событие.
[Test]
public void WaveformsReceived_FourWaveformsReceived_WaveformPlotsEqual4()
{
IWorkflowController oWorkflowControllerMock = Substitute.For<IWorkflowController>();
IEventAggregator oEventAggregatorMock = Substitute.For<IEventAggregator>();
CDataAcquisitionViewModel oDataAcquisitionViewModel = new CDataAcquisitionViewModel(oWorkflowControllerMock, oEventAggregatorMock);
CWaveform[] aoWaveforms = { };
oWorkflowControllerMock.WaveformsReceived += aoWForms => aoWaveforms = aoWForms;
int nNumberOfWaveforms = 4;
CWaveform[] aoFourWaveforms = Enumerable.Range(0, nNumberOfWaveforms).Select(_ => new CWaveform()).ToArray();
oWorkflowControllerMock.WaveformsReceived += Raise.Event<Action<CWaveform[]>>(aoFourWaveforms);
Assert.AreEqual(aoWaveforms.Length, oDataAcquisitionViewModel.Plots.Count());
}
Raise.Event, похоже, не работает для Action, параметром которого является массив ссылочных типов. Это работает для массива типов значений. Можно ли заставить его работать для ссылочных типов?
Редактировать: Объявленный тип для IWorkflowController.WaveformsReceived равен Событие Action <CWaveform[]>