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");
});
Para realizar pruebas pesadas de DOM con Jasmine, puede usar Jasmine Headless WebKit .
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.