2017-02-28 8 views
0

내 ViewModels에 UnitTest를 쓰고 있습니다. 내 뷰 모델에서 내가 가진 내 유닛 테스트에서 지금UnitTest 게시 이벤트가 작동하지 않습니다.

private IEventAggregator _eventAggregator; 

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

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

나는 다음을 수행 : 나는를 디버깅 할 때

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 (에 중단 점을 넣어 가지고)하지만이 실행되지 않고있는 상태입니다 테스트.

사람은 당신이 PRISM (IEventAggregator 및 유니티)를 사용하는 추측 유닛 테스트

+0

EventAggregator.Publish는 이벤트를 게시하고 화재와 잊지의 방식으로 반환합니다. 당신은 단위 테스트에서 IEventAggregator 인터페이스의 구현을 제공해야합니다 : http://stackoverflow.com/questions/3694195/moq-event-aggregator-is-it-possible. – mm8

답변

0

에서 이벤트를 게시하는 방법에 OE 잘못하고있는 무슨 생각을 가지고있다.

나는 몇 년 전에 PRISM을 사용하고 발사

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

및 이벤트를 써야했다. 하지만 그것은 이전 구문 일 뿐이라고 생각합니다.

Unity없이 ViewModel 인스턴스를 만들려고 했습니까?

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

단호한 몸매림은 아무런 문제가되지 않습니다.