在什么情况下我想使用#ignore
与#present
相对,反之亦然?还是相同?
我对文档的初读,我认为以下内容将会通过,但事实并非如此。 编辑以添加:在空手道0.9.0中失败,但在0.8.0中通过。
* def foo = {a: 1}
* match foo == {a: 1, b: "#ignore"}
这些通过:
* def foo = {a: 1}
* match foo == {a: 1, b: "##ignore"}
* match foo == {a: 1, b: "##present"}
答案 0 :(得分:1)
是的,当您要匹配不存在或为空的密钥时,请使用双哈希:
* def foo = { a: 1 }
* match foo == { a: 1, b: '##ignore' }
* match foo == { a: 1, b: '#notpresent' }
* def foo = { a: 1, b: null }
* match foo == { a: 1, b: '##ignore' }
* match foo == { a: 1, b: '#present' }
* def foo = { a: 1, b: 'bar' }
* match foo == { a: 1, b: '##ignore' }
* match foo == { a: 1, b: '#present' }
答案 1 :(得分:0)
不,#ignore
和#present
的行为不相同。
空手道0.9.0中有一个错误,导致他们的行为相同,但这是fixed。
#ignore
应该匹配密钥是否存在。
# This case would NOT match with '#present'
# This case fails in Karate 0.9.0 due to a bug
* def foo = {}
* match foo == { a: '#ignore' }
# These cases would also match with '#present'
* def foo = {a: null}
* match foo == { a: '#ignore' }
* def foo = {a: "bar"}
* match foo == { a: '#ignore' }