3
想知道如果可能的起訂量棱鏡EventAggregator 讓我們以EventAggregator快速入門他們起訂量事件聚合器可以
[TestMethod]
public void PresenterPublishesFundAddedOnViewAddClick()
{
var view = new MockAddFundView();
var EventAggregator = new MockEventAggregator();
var mockFundAddedEvent = new MockFundAddedEvent();
EventAggregator.AddMapping<FundAddedEvent>(mockFundAddedEvent);
var presenter = new AddFundPresenter(EventAggregator);
presenter.View = view;
view.Customer = "99";
view.Fund = "TestFund";
view.PublishAddClick();
Assert.IsTrue(mockFundAddedEvent.PublishCalled);
Assert.AreEqual("99", mockFundAddedEvent.PublishArgumentPayload.CustomerId);
}
I have tried to convert the above using moq but I get problems
他們MockEventAggregator.How我能做到這起訂量使用?
public class MockEventAggregator : IEventAggregator
{
Dictionary<Type, object> events = new Dictionary<Type, object>();
public TEventType GetEvent<TEventType>() where TEventType : EventBase
{
return (TEventType)events[typeof(TEventType)];
}
public void AddMapping<TEventType>(TEventType mockEvent)
{
events.Add(typeof(TEventType), mockEvent);
}
}
有沒有人使用最小起訂量和EventAggregator是否有任何例子呢? 非常感謝
編輯
繼GrameF答案我已經加了我的代碼,仍然不能work.Can你幫
[TestMethod]
public void PresenterPublishesFundAddedOnViewAddClick2()
{
//Arrange
var view = new Mock<IAddFundView>();
var fakeEventAggregator = new Mock<IEventAggregator>();
var fakeMyEvent = new Mock<FundAddedEvent>();
fakeEventAggregator.Setup(x => x.GetEvent<FundAddedEvent>()).Returns(fakeMyEvent.Object);
var presenter = new AddFundPresenter(fakeEventAggregator.Object) {View = view.Object};
fakeMyEvent.Verify(x => x.Publish(It.IsAny<FundOrder>())); **//CRASHES** HERE
//view.PublishAddClick();
//view.Customer = "99";
//view.Fund = "TestFund";
//view.PublishAddClick();
////Assert
//Assert.IsTrue(mockFundAddedEvent.PublishCalled);
//Assert.AreEqual("99", mockFundAddedEvent.PublishArgumentPayload.CustomerId);
//Assert.AreEqual("TestFund", mockFundAddedEvent.PublishArgumentPayload.TickerSymbol);
}
優秀,幾乎there.Would它過多,以幫助創建第一個,然後我可以從那裏拿走它。我已經嘗試過你的實現,但在做一個等效的test.PublishAnEvent()時卡住了; //似乎無法發佈event,因爲我看不到 presenter.View ????? //似乎無法發佈event,因爲我看不到 presenter.View ????? – user9969 2010-09-12 10:43:53
var view = new Mock(); var fakeEventAggregator = new Mock (); var fakeMyEvent = new Mock (); fakeEventAggregator.Setup(x => x.GetEvent ())。Returns(fakeMyEvent.Object); var presenter = new AddFundPresenter(fakeEventAggregator.Object); //似乎無法發佈event,因爲我看不到 presenter.View ????? –
user9969
2010-09-12 10:45:51
你不應該需要視圖才能測試這個;應該有一個方法或由Presenter公開的'ICommand'或屬性(或其他),這會導致該事件被髮布 - 這是我的示例中的PublishAnEvent方法。 – GraemeF 2010-09-12 12:17:51