2012-03-28 5 views
1

Ich bin neu in Jasmine, und ich habe ein dorniges Problem. Ich möchte überprüfen, ob ein Google Analytics-Tracking-Ereignis ausgelöst wird, nachdem ein Nutzer etwas "Gefällt mir" gewählt hat.So testen Sie Google Analytics Anruf mit Jasmine nach Facebook Wie

In meinem Code (das Facebook-SDK), wenn ein Benutzer „likes“ etwas, was ich lösen einen Aufruf an Google Analytics wie folgt aus:

 FB.Event.subscribe('edge.create', function(targetUrl) { 
      _gaq.push(['_trackSocial', 'facebook', 'like']); 
     }); 

Das ist alles Dandy ist, aber ich weiß nicht, wie man teste das mit Jasmine.

Wie führe ich aus meiner Jasmine-Spezifikation ein Facebook-Like aus und spioniere dann die _gaq.push-Funktion aus, um sicherzustellen, dass das GA-Tracking-Ereignis ausgelöst wird? Ich bin verloren ...

Antwort

1

Wahrscheinlich

var fbSpy = spyOn(FB.Event, 'subscribe').andCallThrough(); 
var gaSpy = spyOn(_gaq, 'push').andCallFake(function (args) { 
    expect(args[0]).toEqual('_trackSocial'); 
    expect(args[1]).toEqual('facebook'); 
    expect(args[2]).toEqual('like'); 
}); 

// Trigger here the event. 

expect(fbSpy).toHaveBeenCalled(); 
expect(gaSpy).toHaveBeenCalled(); 
+0

Richtig, aber das Problem ist, das Auslösen des "Like" Ereignis in der spec. Facebook fügt der Seite einen eigenen iFrame hinzu, der optisch als "Gefällt mir" -Schaltfläche angezeigt wird. Sobald der "Gefällt mir" -Button angeklickt wurde, wird der Google Analytics-Tracking-Code ausgelöst. Ich weiß nicht, wie ich dieses Szenario innerhalb einer Jasmin-Spezifikation nachahmen kann. – hackingbeauty