karate - 有没有更简单的方法可以从空手道测试中调用 Java 断言并为断言提供失败消息?
问题描述
有没有更简单的方法可以从空手道测试中调用 Java 断言并为断言提供失败消息?我有一种感觉一定有更优雅的方式?
这是我现在不正确的做法:
* def assertNotBlank =
"""
function(val, msg) {
var Assertions = Java.type('org.junit.jupiter.api.Assertions');
var StringUtils = Java.type('org.apache.commons.lang3.StringUtils');
var JSONObject = Java.type('org.json.JSONObject');
return Assertions.assertFalse(StringUtils.isBlank(
new org.json.JSONObject(val).toString()), msg);
}
"""
然后在您的功能文件中调用它,如下所示:
And eval assertNotBlank {val: '#(response)', msg: 'The reason here.'}
解决方案
看到这段代码让我觉得你最好不要使用空手道而只使用 Java,尤其是当我看到类似new org.json.JSONObject
. 空手道非常擅长处理 JSON,你到底为什么要这么做?
另外,您可能的意思是call
而不是eval
.
也就是说,也许这个答案会给你一些提示,也请阅读评论:https ://stackoverflow.com/a/60693949/143475
推荐阅读
- node.js - Lambda 节点“hello undefined”异步/等待不起作用?
- python - win32com python 异常行为
- java - NullPointerException 错误,有人知道吗?
- php - PHP curl从json文件发送PUT请求
- python - 从 pybullet 理解视图和投影矩阵
- swift - SwiftUI:仅在某些视图上在 iPad 上消失的弹出框
- ios - UIWindow 功能在 Xcode11.3 中不起作用吗?
- azure - 在 Azure 表存储服务中查询 PartitionKey 和 RowKey 语法
- java - Azure HTTPTrigger 发布请求上传文件
- java - IntelliJ 执行失败