Ir al contenido principal
Versión: 6.2 🚧

Comparación de contenido JSON

[Traducción Beta No Oficial]

Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →

Este módulo está disponible para todos los destinos.

shouldEqualJson

json.shouldEqualJson(other) verifica que el lado izquierdo representa la misma estructura JSON que el lado derecho.

Este comparador permite diferencias de formato y orden de claves.

Por ejemplo, estas dos cadenas JSON se considerarían iguales:

{
"name": "sam",
"location": "chicago",
"age": 41
}

y

{ "age": 41, "name": "sam", "location": "chicago" }

El inverso de este comparador es shouldNotEqualJson, que generará un error si dos cadenas JSON son consideradas iguales.

compareJsonOptions

shouldEqualJson admite un parámetro adicional de tipo CompareJsonOptions que incluye las siguientes opciones para modificar el comportamiento de la comparación JSON:

Uso:

Las opciones pueden especificarse directamente:

a.shouldEqualJson(b, compareJsonOptions { arrayOrder = ArrayOrder.Strict })

Otra opción es definir una función de comparación personalizada:

val myOptions = compareJsonOptions {
typeCoercion = TypeCoercion.Enabled
arrayOrder = ArrayOrder.Lenient
}

infix fun String.lenientShouldEqualJson(other: String) = this.shouldEqualJson(other, myOptions)

"[1, 2]" lenientShouldEqualJson "[2, 1]" // This will pass

Parámetros

NamePurposePossible valuesDefault value
PropertyOrderDetermines if the order of properties in JSON objects are considered when comparingPropertyOrder.Strict, PropertyOrder.LenientPropertyOrder.Lenient, i.e. order of properties DON'T matter
ArrayOrderDetermines if the order of elements in JSON arrays are considered when comparingArrayOrder.Strict, ArrayOrder.LenientArrayOrder.Strict, i.e. order of elements DO matter
FieldComparisonDetermines if comparison will fail if JSON objects actual contain extra properties, when compared to expectedFieldComparison.Strict, FieldComparison.LenientFieldComparison.Strict, i.e. extra properties will cause inequality
NumberFormatDetermines if comparison of numbers are strict with regards to number format. For instance, if 100.0 and 100 are considered equal.NumberFormat.Strict, NumberFormat.LenientNumberFormat.Lenient, i.e. number formats DON'T matter
TypeCoercionDetermines if types will try to be coerced, for instance when a string contains a number or boolean valueTypeCoercion.Enabled, TypeCoercion.DisabledTypeCoercion.Disabled, i.e. types will NOT be coerced

Objetivos: Multiplataforma

shouldEqualSpecifiedJson

Alias de shouldEqualJson, con opciones predeterminadas excepto FieldComparison, que se establece en FieldComparison.Lenient.

val a = """ { "a": true, "date": "2019-11-03" } """
val b = """ { "a": true } """

// this would pass
a shouldEqualSpecifiedJson b

// this would fail
a shouldEqualJson b

El inverso de este comparador es shouldNotEqualSpecifiedJson, que generará un error si dos cadenas JSON son consideradas iguales.

Objetivos: Multiplataforma

shouldEqualSpecifiedJsonIgnoringOrder

Alias de shouldEqualJson, con opciones predeterminadas excepto:

  • FieldComparison establecido en FieldComparison.Lenient

  • ArrayOrder establecido en ArrayOrder.Lenient

Objetivos: Multiplataforma

shouldBeEmptyJsonArray

json.shouldBeEmptyJsonArray() afirma que el JSON es un array vacío ([]).

Objetivos: Multiplataforma

shouldBeEmptyJsonObject

json.shouldBeEmptyJsonObject() afirma que el JSON es un objeto vacío ({}).

Objetivos: Multiplataforma

shouldBeJsonArray

json.shouldBeJsonArray() afirma que el JSON es un array.

El inverso de este comparador es shouldNotBeJsonArray, que generará un error si la cadena JSON es un array.

Objetivos: Multiplataforma

shouldBeJsonObject

json.shouldBeJsonObject() afirma que el JSON es un objeto.

El inverso de este comparador es shouldNotBeJsonObject, que generará un error si la cadena JSON es un objeto.

Objetivos: Multiplataforma

shouldBeValidJson

json.shouldBeValidJson() afirma que la cadena es JSON válido.

El inverso de este comparador es shouldNotBeValidJson, que generará un error si la cadena es JSON válido.

Objetivos: Multiplataforma

shouldContainJsonKey

json.shouldContainJsonKey("$.json.path") verifica que una cadena JSON contiene la ruta especificada.

El inverso de este comparador es shouldNotContainJsonKey, que generará un error si una cadena JSON contiene la ruta JSON especificada.

Objetivos: JVM

shouldContainJsonKeyValue

str.shouldContainJsonKeyValue("$.json.path", value) afirma que una cadena JSON contiene una ruta JSON con un value específico.

El inverso de este matcher es shouldNotContainJsonKeyValue, que dará un error si una cadena JSON contiene el valor dado en la ruta JSON especificada.

Objetivos: JVM

shouldMatchJsonResource

json.shouldMatchJsonResource("/file.json") afirma que el JSON es igual al recurso de prueba existente /file.json, ignorando el orden de las propiedades y el formato.

Objetivos: JVM