2012-08-10 18 views
4

我有以下規格。Jasmine在每個測試規格後都不重置間諜

describe("SN.ExitHistory", function() { 

    var exitHistory; 

    beforeEach(function() { 

    SN.Utils = jasmine.createSpy("utils").andCallFake(function() { 
     function readSNCookie(cookieName, key) { 
      return "google.com"; 
     } 

     function isUndefinedOrNull(param) { 
      return (param == null) || (param === "null"); 
     } 

     function createSNCookie(snCookieName, key, value, lifeTime) { 

     } 

     var me = { 
      readSNCookie : readSNCookie, 
      isUndefinedOrNull : isUndefinedOrNull, 
      createSNCookie : createSNCookie 
     }; 
     return me; 

    })(); 

    exitHistory = SN.ExitHistory(); 

    }); 

    it("return last exit link", function() { 
     expect(exitHistory.getLastExitLink()).toEqual("google.com"); 
    }); 

}); 

exitHistory.getLastExitLink內部使用SN.Utils

測試完成後,Jasmine不會刪除間諜對象的實用程序。在下一個測試套件中,我也可以看到相同的utils。每次測試完成後有沒有辦法重置間諜對象?

而不是創建間諜,如果我爲utils創建一個新的對象,行爲是相同的。那麼在這種情況下間諜和實際對象之間有什麼區別。

糾正我,如果我錯了。

回答

5

前段時間我有同樣的問題,經過幾天的努力,我找到了解決方案。如果您使用的間諜將先復位的其他方式,因此與嘗試

spyOn(SN, 'Utils'); 

間諜描述如下: https://github.com/pivotal/jasmine/wiki/Spies

+1

'createSpy'現在已經過時並且在源評論'createSpy'定義之前你不應該使用這種內部方法。 – 2012-08-21 10:14:47

+0

這個答案是對的,順便說一句,它會解決作者的問題 – 2012-08-21 10:23:02

+0

啊,對不起,它是'jasmine.Spy()',這是不允許被調用的: >注意:做不是調用'new jasmine.Spy()'直接 - 間諜必須使用'spyOn','jasmine.createSpy'或'jasmine.createSpyObj'創建。無論如何,spyOn是作者需要的東西。 'createSpy'只適用於間諜功能,而不適用於對象綁定方法。 – 2012-08-21 11:26:55

相關問題