首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Corda -在医院结束的单元测试流程

Corda -在医院结束的单元测试流程
EN

Stack Overflow用户
提问于 2019-12-28 12:53:11
回答 1查看 249关注 0票数 1

我正在测试一个我知道会失败的流程。

代码语言:javascript
复制
assertFailsWith<JdbcSQLIntegrityConstraintViolationException> {
    nodeA.issueState(...) // Note, issueState is an extension on StartedMockNode
}

失败的原因是,由于模式上存在唯一的键/索引冲突,事务中正在输出的状态不能重复:

org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException:唯一索引或主键冲突

当这种情况发生在单元测试中时,输出显示:

信息12:41:22,600伪装网络statemachine.StaffedFlowHospital。-用于测试的invocation_id=fcf25c8a-6bf1-4dce-8e65-3c84c96b8523,invocation_timestamp=2019-12-28T12:41:22.402Z,{actor_id=Only,actor_owning_identity=O=PartyA,L=London,C=GB,actor_store_id=TEST,fiber=10000012,Flow -id=932a7d4e-e 695-4096-b3d8-efbcdbfa5b21,session_id=fcf25c8a-6bf1-4dce-8e65-3c84c96b8523,session_timestamp=2019-12-28T12:41:22.402Z,线程-id=1309}

警告12:42:18,805 FlowHospitalJobTimer statemachine.StaffedFlowHospital。-有1条流量可供夜间观察。受影响的流ids: 932a7d4e-e695-4096-b3d8-efbcdbfa5b21

警告12:43:18,804 FlowHospitalJobTimer statemachine.StaffedFlowHospital。-有1条流量可供夜间观察。受影响的流ids: 932a7d4e-e695-4096-b3d8-efbcdbfa5b21

问题是测试挂起,永远不会完成。我通过在结果的getOrThrow函数上添加一个持续时间来使测试失败,但对我来说,这似乎是错误的,因为流是由于超时而失败的,而不是因为根本的异常。

代码语言:javascript
复制
.getOrThrow(Duration.ofSeconds(10))

类org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException的异常将被抛出,但

java.lang.AssertionError:期望抛出类的异常,但为java.util.concurrent.TimeoutException

有什么正确的方法来测试最终被送往flow医院的流?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-28 15:16:47

我通过在TimeoutException上断言来测试这些信息,就像使用assertFailsWith时提到的那样。当前的医院逻辑是,如果发生任何数据库错误,包括违反约束的情况,都要保持流程进行观察。应该将逻辑添加到流中,以预检查受约束字段。

因为官方错误是一个超时,因为流程实际上并不是异常失败,所以没有办法解决这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59511061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档