請考慮下面的方法來更新人員並通過PRISM EventAggregator發佈事件以指示人員已更新。NSubstitute與PRISM EventAggregator:斷言調用方法觸發具有正確有效負載的事件
我想單元測試消息與正確的有效負載一起發送。在這種情況下,這將意味着正確的personId。
public void UpdatePerson(int personId)
{
// Do whatever it takes to update the person
// ...
// Publish a message indicating that the person has been updated
_eventAggregator
.GetEvent<PersonUpdatedEvent>()
.Publish(new PersonUpdatedEventArgs
{
Info = new PersonInfo
{
Id = personId,
UpdatedAt = DateTime.Now
};
});
}
我知道我可以爲事件創建聚合的替代品:
var _eventAggregator = Substitute.For<IEventAggregator>();
不過,我不知道如何當發送消息以及如何檢查它的有效載荷探測。
做什麼?如果不是這樣,我建議你假設它可以工作,並且在測試視圖模型或其他時使用它。代替'IEventAggregator'並不會幫助你測試EventAggregator'實現,不管怎樣:-) BTW - Prism帶有一組很好的測試,包括事件在這裏https://github.com/PrismLibrary/Prism/tree /master/Source/Prism.Tests/Events – Haukinger
但是,如果您想測試是否使用正確的值創建PersonUpdatedEventArgs,則可能不需要此處的事件聚合器,請檢查生成的實例(並且相信Prism實際發佈事件)... – Haukinger
如何發佈你現在的單元測試 –