tutorial style manejo ejemplos attribute javascript unit-testing jasmine

javascript - style - Pruebas de DOM manipulando en Jasmine



title css (3)

Estoy creando un widget js y la primera parte es agregar javascript de ancho de script, algo como esto (ejemplo de Google Analytics):

(function() { var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true; ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js''; var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s); })();

¿Cómo probarlo con jazmín (usando aparatos?)?


Para configurar los accesorios HTML en mis especificaciones, escribí jasmine-fixture . Con él, puedes hacer cosas como esta:

var $foo, $input; beforeEach(function(){ $foo = affix(''.foo''); # appends to the DOM <div class="foo"></div> $input = $foo.affix(''input[id="name"][value="Jim"]''); # appends <input id="name" value="Jim"/> beneath the .foo div

Y después de cada uno, se limpiará después de ti.

Para las expectativas sobre el estado del DOM, uso jasmine-jquery . Ofrece un montón de matchers como el siguiente:

it(''is named Jim'', function(){ expect($input).toHaveValue("Jim"); });



Supongo que podría realizar su acción, luego verifique el href en la primera etiqueta de script así:

function addGA(){ var ga = document.createElement(''script''); ga.type = ''text/javascript''; ga.async = true; ga.src = (''https:'' == document.location.protocol ? ''https://ssl'' : ''http://www'') + ''.google-analytics.com/ga.js''; var s = document.getElementsByTagName(''script'')[0]; s.parentNode.insertBefore(ga, s); };

Especificaciones de jazmín:

var href = ''http://www.google-analytics.com/ga.js''; expect(document.getElementsByTagName(''script'')[0].href).not.toEqual(href); addGa(); expect(document.getElementsByTagName(''script'')[0].href).toEqual(href);

Sin embargo, estaría interesado en escuchar un método mejor. Revisar el DOM con Jasmine siempre se siente un poco hacky.