Teste QUnit do Google Analytics sem precisar de ga.js

Recentemente, precisei fazer alguns testes QUnit em algum código que interagia com o google analytics em javascript.

Especificamente, disparar alguma lógica ga padrão que lê um var personalizado (slot 4) usando:

_gat._getTrackerByName()._getVisitorCustomVar(4);

Para não carregar ga.js no teste, decidi simular esses métodos para que o código pudesse ser testado no QUnit, o código a seguir definirá o var personalizado para a string ‘asu’ para que possa ser lido posteriormente no código usando o método var personalizado normal:

var customvar4 = undefined;

function _tracker()
{
this._getVisitorCustomVar=_getVisitorCustomVar;
function _getVisitorCustomVar(i)
{
return customvar4;
}
}

// test the initial mocks
test
( "test initial mocks", function()
{
// setup ga mocks
custom_gat
=
{
_getTrackerByName
: function()
{
return new _tracker();
}
}

customvar4
= 'asu';

function _tracker()
{
this._getVisitorCustomVar=_getVisitorCustomVar;
function _getVisitorCustomVar(i)
{
return customvar4;
}
}
(function(_gat)
{
equal
( _gat._getTrackerByName()._getVisitorCustomVar(4), "asu", "we expect asu to be in the ga mock" );
})(custom_gat);
});

Obviamente, isso pode expandir com a adição de mais métodos ga, mas isso deve ajudá-lo a começar. Além disso, você notará que eu ignoro o número do slot e adiciono uma chave ao método se você precisar de dados de slot específicos.