CSharp · Console
using System;
using Moq;
var mockCommunication = new Mock<IPeakCommunication>();
// Setup with callback which uses Raise
mockCommunication.Setup(x => x.Send(It.IsAny<RequestData>()))
.Callback((RequestData r) => mockCommunication.Raise(c => c.RequestReceived += null, r));
// Act
var obj = mockCommunication.Object;
// sample subscriber:
obj.RequestReceived += rd => Console.WriteLine(rd.Data);
obj.Send(new RequestData { Data = 42 }); // Prints 42
// sample data object
public class RequestData
{
public int Data { get; set; }
}
public interface IPeakCommunication : IDisposable
{
#region Delegates
delegate void PeakRequestReceivedHandler(RequestData data);
#endregion
#region Events
event PeakRequestReceivedHandler? RequestReceived;
#endregion
#region Methods
void Send(RequestData data);
#endregion
}