考虑以下更新人员并通过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>();
但是,我不知道如何检测何时发送消息以及如何检查其有效负载.
解决方法:
我不是一个经验丰富的单元测试人员,所以不确定该编写的单元测试是否正确.但是无论如何,到目前为止,这就是我对其进行测试的方式,并且似乎可以满足我的要求.
[Test]
public void TestPersonUpdateSendsEventWithCorrectPayload()
{
// ARRANGE
PersonUpdatedEventArgs payload = null;
_eventAggregator
.GetEvent<PersonUpdatedEvent>()
.Subscribe(message => payload = message);
// ACT
_personService.UpdatePerson(5);
// ASSERT
payload.Should().NotBeNull();
payload.Id.Should().Be(5);
}
欢迎反馈.