jasmine-jquery loadFixtures with Jasmine 2.0 no funcionará
(3)
mantengo jazmín-jquery.
jazmín y jazmín-jquery están bien aquí, el problema es que las solicitudes ajax que cargan el dispositivo no cumplen con las políticas de seguridad de su navegador. hay una sección en el README de jasmine-jquery sobre esto: https://github.com/velesin/jasmine-jquery/#cross-domain-policy-problems-under-chrome
He pasado alrededor de un día depurando esto, y estoy perdido. Parece que algo no funciona en jasmine-jquery 2.0.2.
Estoy actualizando desde Jasmine 1.3.1 y jasmine-jquery 1.5 hasta las versiones más recientes. Recibo varias fallas dependiendo de cómo intento cargar accesorios. Obtengo que "Fixture no se pudo cargar: ./ExposureWorksheetFixture.html (estado: parsererror, mensaje: XML no válido" después de modificar jasmine-jquery para proporcionar parámetros al método ajax.fail ().
Otro efecto que tengo, cuando retoco la muestra de corredores de jazmín y las pruebas es que dice "cero aparatos, cero fallas". Esto sucede cuando hago referencia a jasmine-jquery, jquery 1.10.2, y intento establecer aparatos. Si elimino la operación (pero dejo las referencias) la muestra funciona.
Otro error que recibo cuando intento cargar dispositivos es "(estado: error, mensaje: acceso denegado al URI restringido)". Esto parece suceder cuando realmente intenta cargar el archivo, que está en la ubicación asignada. Vi otra pregunta que apuntaba a jquery que requería un servidor web real para cargar archivos, y no le gusta las rutas de archivos locales, pero no tengo este problema con las versiones anteriores de estas bibliotecas. Esto sucede en Firefox. Obtengo un TypeError: Object doesn''t support this property or method
en IE 8. En Firefox, obtengo un Error: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: A network error occurred.)
.
Aquí hay un código de muestra ...
En PlayerSpec.js:
jasmine.getFixtures().fixturesPath = "./";
...
beforeEach(function() {
player = new Player();
song = new Song
loadFixtures("fixture.html");
});
En SpecRunner.html, tenga en cuenta las referencias adicionales a jquery y jazmín-jquery:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Jasmine Spec Runner v2.0.0</title>
<link rel="shortcut icon" type="image/png" href="lib/jasmine-2.0.0/jasmine_favicon.png">
<link rel="stylesheet" type="text/css" href="lib/jasmine-2.0.0/jasmine.css">
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/jasmine-html.js"></script>
<script type="text/javascript" src="lib/jasmine-2.0.0/boot.js"></script>
<script type="text/javascript" src="lib/jquery-1.10.2.js"></script>
<script type="text/javascript" src="lib/jasmine-jquery.js"></script>
<!-- include source files here... -->
<script type="text/javascript" src="src/Player.js"></script>
<script type="text/javascript" src="src/Song.js"></script>
<!-- include spec files here... -->
<script type="text/javascript" src="spec/SpecHelper.js"></script>
<script type="text/javascript" src="spec/PlayerSpec.js"></script>
</head>
<body>
</body>
</html>
La salida en el corredor (primera prueba: todas las pruebas fallan)
Jasmine2.0.0finished in 0.019s
raise exceptions5 specs, 5 failuresSpec List | Failures
Player should be able to play a Song
Error: Fixture could not be loaded: spec/javascripts/fixtures/fixture.html (status: error, message: Access to restricted URI denied) in file:///D:/Temp/jas/lib/jasmine-jquery.js (line 132)
jasmine.Fixtures.prototype.loadFixtureIntoCache_/request<@file:///D:/Temp/jas/lib/jasmine-jquery.js:132 jQuery.Callbacks/fire@file:///D:/Temp/jas/lib/jquery-1.10.2.js:3048 jQuery.Callbacks/self.add@file:///D:/Temp/jas/lib/jquery-1.10.2.js:3094 jasmine.Fixtures.prototype.loadFixtureIntoCache_@file:///D:/Temp/jas/lib/jasmine-jquery.js:131 jasmine.Fixtures.prototype.getFixtureHtml_@file:///D:/Temp/jas/lib/jasmine-jquery.js:115 jasmine.Fixtures.prototype.read@file:///D:/Temp/jas/lib/jasmine-jquery.js:77 jasmine.Fixtures.prototype.load@file:///D:/Temp/jas/lib/jasmine-jquery.js:65 jasmine.Fixtures.prototype.proxyCallTo_@file:///D:/Temp/jas/lib/jasmine-jquery.js:161 window.loadFixtures@file:///D:/Temp/jas/lib/jasmine-jquery.js:763 @file:///D:/Temp/jas/spec/PlayerSpec.js:9 attemptSync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1510 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1498 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Spec.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:309 Suite.prototype.execute/wrapChildAsAsync/<@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1708 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Suite.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1696 Suite.prototype.execute/wrapChildAsAsync/<@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1708 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 Suite.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1696 @file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:541 attemptAsync@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1520 QueueRunner.prototype.run@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1496 QueueRunner.prototype.execute@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:1485 Env/queueRunnerFactory@file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:518 @file:///D:/Temp/jas/lib/jasmine-2.0.0/jasmine.js:548 window.onload@file:///D:/Temp/jas/lib/jasmine-2.0.0/boot.js:170
Edit 2/13/14 @ 8:32 pm est: Solo intenté actualizar solo jazmín-jquery, y todo falla espectacularmente cuando lo hago (Jasmine 1.31). Estoy pensando que debe haber algo con esta biblioteca :(
Quiero agradecer a travisjeffery por su respuesta. Si bien no fue la resolución de mi problema, me llevó a intentar cosas diferentes. La respuesta a la muestra específica que publiqué fue que puse el accesorio en la carpeta con la especificación, que no era la carpeta con el corredor, y la ruta se define en relación con el corredor. Sin embargo, mi problema con mi configuración real se mantuvo. Desde que finalmente obtuve una muestra de trabajo, me puse a trabajar averiguando qué estaba haciendo mal.
El problema principal era mi accesorio HTML, aunque era válido en jasmine-jquery 1.5, ya no era válido en la versión 2.0.2. Pensé que había cubierto todas las posibilidades de sintaxis antes eliminando las piezas de una en una, pero cuando lo hice de nuevo , descubrí que la eliminación de la sección de guiones tenía la carga del dispositivo. Lo devolví, pero dentro del elemento html, en lugar de hacerlo después. Me imagino que esto equivale a dos elementos raíz en un documento XML, ¡así BAM! Error de análisis.
Otro problema es que tengo que colocar el guión jasmine-jquery en el corredor después de cargar el archivo boot.js, de lo contrario obtengo "0 fallas 0 en los accesorios". Después de eso, tuve que actualizar la sintaxis de Jasmine, y ahora tengo un conjunto de pruebas de trabajo otra vez. Espero que esto ayude a otros.
Gracias. Agregué esto a spec_helper.js.coffee:
# rake spec:javascript loads specs relative to the tmp/jasmine/runner.html, need to override:
jasmine.getFixtures().fixturesPath="../../spec/javascripts/fixtures"