2017-02-28 5 views
0

私はUnitTestを自分の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にブレークポイントを入れている)が、私はデバッグするとき、それがトリガされていない私は私のViewModelで テスト。

は、誰もが、私はあなたがPRISM(IEventAggregatorとユニティ)を使用している推測UnitTestを

+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); 

ちょうど良いものになるためには、何の問題もありません。

関連する問題