Comparación de contenido JSON
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
| Name | Purpose | Possible values | Default value |
|---|---|---|---|
PropertyOrder | Determines if the order of properties in JSON objects are considered when comparing | PropertyOrder.Strict, PropertyOrder.Lenient | PropertyOrder.Lenient, i.e. order of properties DON'T matter |
ArrayOrder | Determines if the order of elements in JSON arrays are considered when comparing | ArrayOrder.Strict, ArrayOrder.Lenient | ArrayOrder.Strict, i.e. order of elements DO matter |
FieldComparison | Determines if comparison will fail if JSON objects actual contain extra properties, when compared to expected | FieldComparison.Strict, FieldComparison.Lenient | FieldComparison.Strict, i.e. extra properties will cause inequality |
NumberFormat | Determines if comparison of numbers are strict with regards to number format. For instance, if 100.0 and 100 are considered equal. | NumberFormat.Strict, NumberFormat.Lenient | NumberFormat.Lenient, i.e. number formats DON'T matter |
TypeCoercion | Determines if types will try to be coerced, for instance when a string contains a number or boolean value | TypeCoercion.Enabled, TypeCoercion.Disabled | TypeCoercion.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:
FieldComparisonestablecido enFieldComparison.LenientArrayOrderestablecido enArrayOrder.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 sí 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