2016-04-27 8 views
2

Ich erstelle einen Jasmine-Test, um zu sehen, ob die Funktion aufgerufen wird, wenn auf das Objekt $('#notification') geklickt wird. HierKlicken Sie auf das Ereignis, das eine Funktion aufruft

ist der Code aus der .cshtml Datei:

$('#notification').click(function() { 
    showNotification(); 
    }); 

Hier ist mein aktueller Jasmin-Test:

describe("Notification", function() { 
    beforeEach(function() { 
     loadFixtures('dashboard.cshtml'); 
    }); 
    it("should call function when notification is clicked", function() { 
     spyOn(window, 'showNotification'); 
     $('#notification').click(); 
     expect(window.showNotification).toHaveBeenCalled(); 
    }); 
    }); 

Aber ich bin immer dieses Ergebnis:

Test 'Notification:should call function when notification is clicked' failed 
    Expected spy showNotification to have been called. 

Habe ich es falsch gemacht? Fehle ich etwas? Ich bin neu in Jasmine.

EDIT: So sieht die showNotification aus.

function showNotification() { 
    loadNotification('', ''); 
    resetFields(); 
} 

EDIT: fand eine Lösung für mein Problem. Ich habe den folgenden Code verwendet, um den Klick zu simulieren.

$('#notification').on('click', function() { 
      showNotification(); 
}); 
$('#notification').click(); 

ich bin jetzt in der Lage zu testen, ob showNotification aufgerufen wird und auch die loadNotification und resetFields, die in showNotification sind.

dank denen, die geantwortet haben. Gibt es jemanden, der das schließt?

+1

Stellen Sie sicher, dass 'window.showNotification' existiert und diese Funktion ist nicht in einer anderen Funktion verschachtelt. –

+0

Sicherstellen, dass es nicht verschachtelt ist, ist das große Problem hier - kannst du die Fixtures-Datei anzeigen? demach.cshtml –

+0

@DarrenSweeney Ich bin nicht sicher im erlaubte zeigen den Code in Dashboard.cshtml aber die showNotification sieht etwas wie diese Funktion showNotification() { loadNotifiction ('', ''); resetFields(); } –

Antwort

0

Wie das Ergebnis sagt, haben Sie der Schaltfläche den Listener hinzugefügt, aber nie mit Klickaktion ausgelöst.

diesen Klick-Aktion Fügen Sie den Test auszulösen:

$('#notification').trigger('click');

+0

setze ich es nach $ ('# notification'). Click(); ? –

+0

Bitte lesen Sie OP. Was denkst du '$ ('# notification'). Click();' tut? –

Verwandte Themen