【问题标题】:UnitTest publish event not workingUnitTest 发布事件不起作用
【发布时间】:2023-04-09 14:30:01
【问题描述】:

我正在为我的 ViewModel 编写 UnitTest。 在我的 ViewModel 中,我有:

private IEventAggregator _eventAggregator;

public MyViewModel( IEventAggregator eventAggregator  ) {
  _eventAggregator = eventAggregator;
  _eventAggregator.GetEvent<ResponseParameters>( ).Subscribe( OnResponseParametersSave );
}

private void OnResponseParametersSave (ResponseParameters item ){
  var x = item
}

现在在我的 UnitTest 中,我执行以下操作:

private IUnityContainer _unityContainer;
private IEventAggregator _eventAggregator;

[TestInitialize]
public async void TestInitialize( ) {
     _unityContainer = new UnityContainer( );
     _unityContainer.RegisterType<IEventAggregator, EventAggregator>( );
     _eventAggregator = _unityContainer.Resolve<EventAggregator>( );

     _vm = _unityContainer.Resolve<MyViewModel>( );
     await _vm.Load( );
}

[TestMethod]
public void AddingItemDataObjectsShouldThenBeLoaded( ) {
  var _item = new MyObject{
    Description = "ArticleOne",
    Id = 2,
    Comment = "Testing event and adding of item to list",
   };
   _eventAggregator.Publish( new ResponseParameters ( ) { item = _item } );
   Assert.IsNotNull(_vm.Data, "The Data object is still null after adding an item" );

}

我在方法 OnResponseParametersSave() 上设置了一个断点,但在我调试测试时它没有触发。

有没有人知道我做错了什么以及如何在 UnitTest 中发布事件

【问题讨论】:

  • EventAggregator.Publish 只是发布事件并以即发即弃的方式返回。您应该在单元测试中提供自己的 IEventAggregator 接口实现:stackoverflow.com/questions/3694195/…

标签: wpf unit-testing mvvm viewmodel


【解决方案1】:

猜你正在使用 PRISM(IEventAggregator 和 Unity)。

几年前我用过PRISM,不得不写

_eventAggregator.GetEvent<ResponseParameters>().Publish( new ResponseParameters ( ) { item = _item } );

触发和事件。但我猜这只是一种较旧的语法。

您是否尝试过在不使用 Unity 的情况下创建 ViewModel 的实例?

_eventAggregator = new EventAggregator();
_vm = new MyViewModel>(_eventAggreator);

只是为了确保 Unity 不会造成任何麻烦。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-10
    • 2013-01-05
    相关资源
    最近更新 更多