No Karate, estou tentando validar uma resposta json usando uma combinação de um marcador e uma variável de auto referência, conforme sugerido neste post . Mas a verificação nula não está funcionando como pretendido.
Tentando validar - a chave 'nome' é uma string, opcional e se presente não deve ser nula
Veja o trecho de código abaixo:
* def aTest =
"""
{
name: null,
type: "House",
}
"""
* def eTest =
"""
{
name: '##string? _ !==null',
type: '##string',
street: '##string'
}
"""
* match aTest == eTest
Quando executo o teste, espero que ele falhe para a chave 'name'. Mas o teste está passando. Não tenho certeza do que estou fazendo errado. Alguém pode me orientar sobre isso, por favor.
Acho que esse exemplo foi específico para
#array
. Eu tentei#present
e funcionou. Isso pode ser um pequeno bug no Karate.EDIT - depois de ler o comentário, este é um caso muito interessante que me deixou perplexo. Acho que não há como fazer isso em uma única etapa e tenho uma pergunta sobre o quão importante isso é. Meu palpite é que isso nunca aconteceu antes porque se o valor for nulo, a maioria dos sistemas simplesmente ignora o campo e o trata como não presente, conforme explicado aqui: https://github.com/karatelabs/karate#null-and-notpresent
De qualquer forma, aqui está uma solução, pode haver outras. Há um caso extremo em que falhará se o valor for
''
, mas deixo isso como um exercício :)