Я хочу создать модульный тест для PublishDataProvider, упомянутого ниже. Как я новичок в модульном тесте. Я попробовал ниже метод, но я получаю ошибку. Я ошибаюсь, потому что пытаюсь. Может кто-нибудь, пожалуйста, направьте меня в правильном направлении.
Файл класса Код: PublishDataProvider.cs
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);
}
Файл DataRouter.cs
public event ModuleDataEventHandler ModuleDataReceived;
private void SendBatteryStatus(object sender, EventArgs e)
{
ModuleDataReceived?.Invoke(physmoduleinfo);
}
Тестовый файл: Test.cs
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);
Ошибка:
System.InvalidOperationException: Неверный вызов, последний вызов был использован или не было сделано (убедитесь, что вы вызываете виртуальный (C #) / Overridable (VB) метод).