代码之家  ›  专栏  ›  技术社区  ›  Geeth

NUnit测试方法事件引发抛出错误

  •  0
  • Geeth  · 技术社区  · 7 年前

    我想为下面提到的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)方法)。

    0 回复  |  直到 7 年前