public async Task ShouldCloseTheAccount() { ICommandHandler <ValidateAccountCommand> fakeCommandHandler = A.Fake <ICommandHandler <ValidateAccountCommand> >(); A.CallTo(() => fakeCommandHandler.Handle(A <ValidateAccountCommand> .Ignored)).Invokes(args => { ValidateAccountCommand command = args.Arguments[0] as ValidateAccountCommand; bus.Publish(new AccountClosedEvent(command.AggregateID, command.OriginalVersion, command.CorrelationID, command.AggregateID)); }); bus.Subscribe(fakeCommandHandler); await sut.Execute(3); sut.Response.Should().Be(AccountOpenerResponse.Closed); }
public Task <AsyncTaskResult <IApplicationMessage> > HandleAsync(ValidateAccountCommand command) { var applicationMessage = default(ApplicationMessage); //此处应该会调用外部接口验证账号是否合法,这里仅仅简单通过账号是否以INVALID字符串开头来判断是否合法;根据账号的合法性,返回不同的应用层消息 if (command.AggregateRootId.StartsWith("INVALID")) { applicationMessage = new AccountValidateFailedMessage(command.AggregateRootId, command.TransactionId, "账户不合法."); } else { applicationMessage = new AccountValidatePassedMessage(command.AggregateRootId, command.TransactionId); } return(Task.FromResult(new AsyncTaskResult <IApplicationMessage>(AsyncTaskStatus.Success, applicationMessage))); }
public Task HandleAsync(ICommandContext context, ValidateAccountCommand command) { var applicationMessage = default(ApplicationMessage); //此处应该会调用外部接口验证账号是否合法,这里仅仅简单通过账号是否以INVALID字符串开头来判断是否合法;根据账号的合法性,返回不同的应用层消息 if (command.AggregateRootId.StartsWith("INVALID")) { applicationMessage = new AccountValidateFailedMessage(command.AggregateRootId, command.TransactionId, command.TransactionType, command.PreparationType, "账户不合法."); } else { applicationMessage = new AccountValidatePassedMessage(command.AggregateRootId, command.TransactionId, command.TransactionType, command.PreparationType, command.Amount); } context.SetApplicationMessage(applicationMessage); return(Task.CompletedTask); }