Raise.Event>: Невозможно вызвать событие с предоставленными аргументами - PullRequest
0 голосов
/ 07 мая 2019

Когда я запускаю модульный тест ниже, он не проходит и возвращает это сообщение:

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[]>

...