请求正文中的动态文件

gervais.b

我正在与空手道一起玩,以测试一种资源,该资源接受过去不能存在的日期。

Scenario: Schedule one
    Given path '/schedules'
    And request read('today_at_19h30.json')
    When method post
    Then status 201

我为每种情况创建了一些JSON文件(大多数是重复的,但有细微的变化)。但是我无法想象每次我要运行测试时更改所有日期的日期。

在不远的将来使用日期不是一个好主意,因为需要进行一些手动验证,这将迫使我们单击(下一步)太多次。

有没有办法在文件中包含变量或表达式?

谢谢

彼得·托马斯

在空手道中可以使用多种方法来“弄乱” JSON数据。一种方法是仅使用JS表达式。例如:

* def foo = { a: 1 }
* foo.a = 2
* match foo == { a: 2 }

对于您的特定用例,我怀疑嵌入式表达式将是更优雅的实现方式。嵌入式表达式的伟大之处在于它们可以与read()API结合使用

例如,文件的内容test.json{ "today": "#(today)" }

Background:
* def getToday =
"""
function() {
  var SimpleDateFormat = Java.type('java.text.SimpleDateFormat');
  var sdf = new SimpleDateFormat('yyyy/MM/dd');
  var date = new java.util.Date();
  return sdf.format(date);
}
"""

Scenario:
* def today = getToday()
* def foo = read('test.json')
* print foo

结果是:

Running com.intuit.karate.junit4.dev.TestRunner
20:19:20.957 [main] INFO  com.intuit.karate - [print] {
  "today": "2020/01/22"
}

顺便说一句,如果getToday已定义函数,您甚至可以执行以下操作:{ "today": "#(getToday())" }这可能会给您更多的想法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章