La siguiente es una prueba que aparentemente funciona en Ember.js 2.15, pero parece que no funciona en la versión 3.0: No se pudo ejecutar 'querySelector' en 'Element': 'a: contains (' Contact ')' no es un selector válido .
import { module, test } from 'qunit';
import { visit, currentURL, click } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
module('Acceptance | list rentals', function(hooks) {
setupApplicationTest(hooks);
test('should show link to contact', async function(assert){
await visit('/');
await click("a:contains('Contact')");
assert.equal(currentURL(),'/contact','should navigate to contact');
});
});
¿Cómo hacer esto en Ember.js 3.0?
No pude encontrarlo en las guías de Ember en línea. Los tutoriales parecen referirse así a versiones anteriores.
PD: el archivo de plantilla de la aplicación contiene
{{#link-to "contact"}}
Contact
{{/link-to}}
PD: La idea de usar tal selector viene del tutorial para la versión Ember ... ¡3.0! (Vea hacia el final aquí https://guides.emberjs.com /v3.0.0/tutorial/routes-and-templates/)
EDITAR: la guía Emberjs 3.1 ya está disponible y los ejemplos del tutorial finalmente coinciden con el nuevo código:
https://guides.emberjs.com/v3.1.0/tutorial/model-hook/
2 respuestas
Agregaría un nombre de clase personalizado a {{# link-to}} y usaría ese nombre de clase como selector para el evento de clic
{{#link-to "contact" class="menu-contact"}}
Contact
{{/link-to}}
Y en mi prueba de aceptación llamaré
await click(".menu-contact");
El nuevo asistente de find
de @ember/test-helpers
utiliza el document.querySelector
nativo del navegador detrás de escena en lugar de jQuery. Desafortunadamente, dado que: contiene no es un selector de CSS real, no es compatible con ningún navegador.
El ayudante find
global más antiguo aún está disponible, si usa moduleForAcceptance
en lugar de setupApplicationTest
. No sé si hay planes para desaprobar eso en el futuro.
Personalmente, recomendaría colocar una clase o un atributo data-test-
en el elemento y buscarlo de esa manera.
Nuevas preguntas
ember.js
Ember.js es un marco de aplicación de servicio de componentes escrito en JavaScript. Considere hacer que su pregunta sea más fácil de responder utilizando las plantillas preconfiguradas mencionadas en el wiki de esta etiqueta. (Siempre especifique la versión de ascua utilizada al describir su problema)