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.