Pregunta

Estoy tratando de utilizar Qunit para probar algo de código, pero tengo algunos problemas con las llamadas Ajax. Ni siquiera puedo conseguir que se prueba correctamente con el más simple llamada Ajax usando métodos jQuery. Los problemas parece ser que un espacio al final se añade al textResponse, no importa lo que hago.

Mi código inicial era algo así como

asyncTest('Ajax calls', function() {
    expect(1);

    $.get('ajax.txt', {}, function(response) {
        equal(response, 'foo', 'Ajax calls work correctly');
    });

    setTimeout(function() {
        start();
    }, 600);
});

donde ajax.txt es un archivo de texto que contiene la olny foo caracteres. Esta prueba falla, la presentación de informes

  

llamadas Ajax trabajo correctamente, se esperaba: "foo" número: "foo", diff: "foo" "foo"

Entonces intentado el siguiente:

  • He probado contra "foo" (incluyendo un espacio final)
  • he hecho response.replace(' ', '') antes de la prueba
  • He variado la codificación de fuente del archivo ajax.txt
  • He probado tanto en Firefox y Chrome, limpiar la memoria caché cada vez
  • He probado manualmente por la igualdad dentro de una alerta, incluso con == comparación

pero en ningún caso yo era capaz de conseguir un partido. Por ejemplo, en la primera variante Tengo la respuesta desconcertante

  

llamadas Ajax trabajo correctamente, se esperaba: "foo" número: "foo", diff: "foo"

Ahora estoy volviendo un poco loco. ¿Qué podría haber sido posiblemente haciendo mal?

¿Fue útil?

Solución

Puede $.trim() (jQuery recortar, ya que IE <9 no tiene de forma nativa ) el resultado, como esto:

equal($.trim(response), 'foo', 'Ajax calls work correctly');

¿Por qué está pasando esto? Es probable un error de formato, por ejemplo, Unix vs finales de línea de Windows que se están arrastrando allí en usted.

Otros consejos

tuve similares - terminaciones sí, muy posiblemente la línea; Tuve que quitar "\ r" y "\ n" para asegurarse de que estaba trabajando. La otra manera de conseguir lo que exopect es utilizar JSON. Obtener la llamada AJAX para retorno (por ejemplo).

{ "Text":"foo" }

A continuación, como prueba:

equal(response.Text, 'foo', 'Ajax calls work correctly');

Es necesario establecer el tipo de retorno AJAX para JSON en la llamada jQuery AJAX.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top