【发布时间】:2011-11-26 18:44:12
【问题描述】:
我有一个使用串行端口与外围设备通信的外围驱动程序。我想对该驱动程序进行单元测试并尝试模拟串行端口。因此,我为框架类型 SerialPort 创建了一个包装器,让它实现一个接口:
public interface IScannerPort
{
Handshake Handshake { get; set; }
bool IsOpen { get; }
event SerialDataReceivedEventHandler DataReceived;
void Close( );
void Open( );
string ReadLine( );
}
现在我使用 moq 创建了一个模拟:
Mock<IScannerPort> scannerPort = new Mock<IScannerPort>( );
然后我想引发DataReceived 事件。但是 SerialDataReceivedEventArgs 不允许我设置 EventType 属性。所以我也尝试模拟 SerialDataReceivedEventArgs,结果是
Mock<SerialDataReceivedEventArgs> args = new Mock<SerialDataReceivedEventArgs>();
args.SetupProperty(a => a.EventType, SerialData.Eof);
但第二行引发了 NotSupportedException: Invalid setup on a non-virtual (VB 中可覆盖) 成员:a => a.EventType
如何发起活动?或者我如何模拟事件参数?
【问题讨论】:
标签: c# unit-testing moq mstest