我想为下面提到的PublishDataProvider创建单元测试。因为我是单元测试新手。我尝试了下面的方法,但我得到了错误。我怀疑我尝试的方式是错误的。谁能给我指路吗。
类文件代码:PublishDataProvider。反恐精英
private DataRouter _dataRouter;
public event EventHandler<PhysiologyData> DataUpdated;
public PublishDataProvider(IUnityContainer container)
{
_DataRouter = container.Resolve<DataRouter>(new ResolverOverride[] {
new ParameterOverride("clienttype",ClientType.VCG)});
if(_physiologyDataRouter != null)
{
_dataRouter.ModuleDataReceived += OnModuleDataReceived;
}
}
private void OnModuleDataReceived(ModuleData moduledata)
{
moduledata.DataType = DataType.ModuleData;
DataUpdated?.Invoke(this, moduledata);
}
文件数据路由器。反恐精英
public event ModuleDataEventHandler ModuleDataReceived;
private void SendBatteryStatus(object sender, EventArgs e)
{
ModuleDataReceived?.Invoke(physmoduleinfo);
}
测试文件:Test。反恐精英
protected static IUnityContainer Container { get; set; }
protected IDataProvider DataProvider { get; set; }
private DataRouter _dataRouter;
[Test]
public void TestPublishDataProvider()
{
Container = new UnityContainer();
Container.LoadConfiguration();
_dataRouter = MockRepository.GenerateMock<DataRouter>(ClientType.VCG, Container);
Container.RegisterInstance(_dataRouter, new ContainerControlledLifetimeManager());
MarkerDataBuffer MarkerDataBuffer = new MarkerDataBuffer();
_physiologyDataRouter.Raise(x => x.MarkerDataReceived += null, MarkerDataBuffer);
var wasCalled = false;
_physiologyDataRouter.MarkerDataReceived += (e) => wasCalled = true;
NUnit.Framework.Assert.IsTrue(wasCalled);
错误:
系统InvalidOperationException:无效调用、使用了最后一个调用或未进行任何调用(确保调用的是虚拟(C#)/Overridable(VB)方法)。