2012-08-10 4 views
4

У меня есть следующая спецификация.Жасмин не сбрасывает шпион после каждого теста.

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.

После завершения теста Жасмин не удаляет утилиты для шпионских объектов. В следующем наборе тестов я также вижу те же самые utils. Есть ли способ сбросить объект-шпион после завершения каждого теста?

Вместо создания шпиона, если я создаю новый объект для utils, поведение будет таким же. Тогда в чем разница между шпионом и фактическим объектом в этом сценарии.

Исправьте меня, если я ошибаюсь.

ответ

5

У меня была такая же проблема некоторое время назад, и после нескольких дней борьбы я нашел решение. Если вы используете другой путь ваш шпион будет сброшена, поэтому попробуйте с

spyOn(SN, 'Utils'); 

Шпионы описаны здесь: https://github.com/pivotal/jasmine/wiki/Spies

+1

'createSpy' теперь осуждается и есть комментарий в источниках, прежде чем' определения createSpy' что вы не должны использовать этот внутренний метод. –

+0

, и этот ответ прав, кстати, он решит проблемы автора –

+0

ах, извините, это 'jasmine.Spy()', который не разрешается вызывать: > Примечание: Do не call 'new jasmine.Spy() 'непосредственно - шпион должен быть создан с использованием' spyOn', 'jasmine.createSpy' или' jasmine.createSpyObj' так или иначе, 'spyOn' - это то, что нужно автору. 'createSpy' подходит только для шпионских функций, а не для привязанных к объектам методов. –

Смежные вопросы