【发布时间】: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