diff --git a/src/Dtmworkflow/Workflow.Imp.cs b/src/Dtmworkflow/Workflow.Imp.cs index 1febed0..b1264eb 100644 --- a/src/Dtmworkflow/Workflow.Imp.cs +++ b/src/Dtmworkflow/Workflow.Imp.cs @@ -81,6 +81,9 @@ internal async Task Process(WfFunc2 handler, byte[] data) await this.Submit(res, err, default); } + if (err != null) + throw err; + return res; } diff --git a/tests/Dtmworkflow.Tests/WorkflowHttpTests.cs b/tests/Dtmworkflow.Tests/WorkflowHttpTests.cs index 83adf18..3fc516b 100644 --- a/tests/Dtmworkflow.Tests/WorkflowHttpTests.cs +++ b/tests/Dtmworkflow.Tests/WorkflowHttpTests.cs @@ -141,7 +141,7 @@ public async void Execute_Should_ThrowException_When_WfFunc2_ThrowException() } [Fact] - public async void Execute_Should_Return_Null_When_WfFunc2_ThrowDtmFailureException() + public async void Execute_Should_ThrowDtmFailureException_When_WfFunc2_ThrowDtmFailureException() { var factory = new Mock(); var httpClient = new Mock(); @@ -161,7 +161,7 @@ public async void Execute_Should_Return_Null_When_WfFunc2_ThrowDtmFailureExcepti var wfgt = new WorkflowGlobalTransaction(factory.Object, NullLoggerFactory.Instance); - var wfName = nameof(Execute_Should_Return_Null_When_WfFunc2_ThrowDtmFailureException); + var wfName = nameof(Execute_Should_ThrowDtmFailureException_When_WfFunc2_ThrowDtmFailureException); var gid = Guid.NewGuid().ToString("N"); var handler = new Mock(); @@ -170,8 +170,7 @@ public async void Execute_Should_Return_Null_When_WfFunc2_ThrowDtmFailureExcepti wfgt.Register(wfName, handler.Object); var req = JsonSerializer.Serialize(new { userId = "1", amount = 30 }); - var res = await wfgt.Execute(wfName, gid, Encoding.UTF8.GetBytes(req), true); - Assert.Null(res); + await Assert.ThrowsAsync(async () => await wfgt.Execute(wfName, gid, Encoding.UTF8.GetBytes(req), true)); } [Fact] @@ -209,7 +208,7 @@ public async void Rollback_Should_Be_Executed() wfgt.Register(wfName, handler); var req = JsonSerializer.Serialize(new { userId = "1", amount = 30 }); - var res = await wfgt.Execute(wfName, gid, Encoding.UTF8.GetBytes(req), true); + var res = await Assert.ThrowsAsync(async () => await wfgt.Execute(wfName, gid, Encoding.UTF8.GetBytes(req), true)); func.Verify(x => x.Invoke(It.IsAny()), Times.Once); }