2016-04-27 15 views
2

オブジェクト$('#notification')がクリックされたときに関数が呼び出されているかどうかを確認するためのジャスミンテストを作成しています。ここで関数を呼び出すイベントをクリックします。

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

が私の現在のジャスミンのテストです:

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(); 
    }); 
    }); 

しかし、私はこの結果を取得しています:

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

をここで

.cshtmlファイルからのコードです私はそれが間違っていたのですか?何か不足していますか?私はジャスミンが初めてです。

EDIT:showNotificationの外観は次のとおりです。

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

EDIT:私の問題の解決策を見つけました。私はクリックをシミュレートするために次のコードを使用しました。

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

私は今showNotificationが呼び出されてもshowNotificationにありloadNotificationとresetFieldsされているかどうかをテストすることができています。

回答したユーザーに感謝します。これを閉じる人がいますか?

+1

は 'window.showNotification'が存在し、その関数が別の関数内にネストされていないことを確認します。 –

+0

ネストされていないことを確認して、ここでは大事です - フィクスチャファイルを表示できますか? dashboard.cshtml –

+0

@DarrenSweeney私はdashboard.cshtml内のコードを表示できませんが、showNotificationはこの関数のようになります。showNotification(){ loadNotifiction( ''、 ''); resetFields(); } –

答えて

0

結果として、リスナーをボタンに追加しましたが、クリック操作ではリスナーがトリガーされませんでした。

テストをトリガするために、このクリックアクションを追加します。

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

+0

$( '#notification')の後に置いてください。 ? –

+0

OPをお読みください。 '$( '#notification')click();'は何をしますか? –

関連する問題