2011-10-09 34 views
10

Estaba pensando en escribir algunas pruebas de IU en backbone.js y jquery. Puede que no sea la mejor manera de hacerlo, pero es algo en lo que estaba pensando: automatizar las pruebas sin grabar y reproducir, a través de código simple.Al hacer clic en 'Aceptar' en alerta o confirmar el diálogo a través de jquery/javascript?

Lo único que hizo que me rascara la cabeza al usar este enfoque es este: en algunos 'flujo de casos de uso' (de la ejecución) aparecerían cuadros de diálogo de confirmación/alerta. Me gustaría hacer clic en 'Aceptar' y continuar el flujo. ¿Esto es posible incluso a través de un código simple de JavaScript? ¿Cómo?

Nota: Sé que existen bibliotecas de prueba GUI, pero quiero saber cómo hacerlo utilizando solo código jQuery/javascript, si es posible.

+1

+1 por intentar un enfoque diferente para las pruebas de interfaz de usuario – joshin4colours

Respuesta

14

Por lo que sé si utiliza una llamada estándar alert() no puede activar un clic en "Aceptar" porque la llamada de alerta bloquea el bucle de eventos JS normal.

Sin embargo, usted debe ser capaz de reemplazar window.alert y window.confirm con su propia función que no hace nada:

window.alert = function() { 
    console.log.apply(console, arguments); 
}; 

colocar estos en la parte superior de sus JS antes de cargar cualquier otra cosa y cualquier posteriores llamadas a alert() o confirm() llamará a estos en su lugar.

+0

Hmmmm ... pero tendría que hacer los cambios a lo largo de la código. Esas alertas no son errores sino parte real de la aplicación, en su primer incremento. Serán cambiados a alertas personalizadas más tarde ... esto no sería posible Supongo que – PhD

+0

no, el punto es que solo haces este cambio una vez si estás en modo de depuración, y ese código anterior _replaza_ todas las invocaciones posteriores de 'alerta() '. – Alnitak

+0

¡Ahhhh ya veo! Dulce ... ¿se puede hacer lo mismo para confirmar? Supongo que sí ... :) – PhD

3

quieres algo así como:

<script type="text/javascript"> 
var oldConfirm = confirm; 
var oldAlert = alert; 

confirm = function() { 
    return true; 
}; 
alert = function() { 
    return true; 
} 

var response = confirm("Is this OK?"); 

if (response) { 
    alert("Yay"); 
} 
else { 
    alert("Boo"); 
} 

confirm = oldConfirm; 
alert = oldAlert; 
</script> 
+0

No estoy seguro de cómo podría ayudar ... ¿podría aumentar el 'intento' con alguna explicación, por favor? :) – PhD

+0

Supongo que quería decir 'oldConfirm = window.confirm' según la respuesta de Alnitak ... – PhD

+0

Sí, lo siento. window.confirm y confirm se refieren a lo mismo. –

Cuestiones relacionadas