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/

1
MASL 21 feb. 2018 a las 04:15

2 respuestas

La mejor respuesta

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");
2
Raghavendra Bhat 30 mar. 2018 a las 04:08

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.

1
Gaurav 23 feb. 2018 a las 20:24