2015-01-27 4 views
4

Мне нужно выбросить исключение, если утилита используется за пределами блока «it» или «beforeEach» в моих тестах. Пример -При запуске тестов на жасмин, как я могу узнать, есть ли я в описываемом блоке, перед каждым блоком или блоком?

describe('some test', function(){ 

    useUtil();  // should throw exception 

    beforeEach(function(){ 
     useUtil() // should work 
    }) 

    it('should test something', function(){ 
     useUtil() // should work 
    }) 
    }) 

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

+2

Вы не можете этого знать (во время выполнения). Вы можете статически анализировать код, но это, кажется, больше усилий, чем того стоит. –

+2

Вы можете что-то взломать, бросив и поймав исключение в 'useUtil' и проверив свойство' stack' порожденной 'Error'. 'stack' является нестандартным, поэтому поведение не будет согласованным во время выполнения. – joews

+0

, пожалуйста, проверьте жасминовые документы для шпионов: http://jasmine.github.io/edge/introduction.html#section-Spies – eldi

ответ

2

Вы можете создать глобально доступную переменную с именем isSpecPhase и установить ее на начальном этапе false.

Затем определяют глобальную beforeEach:

beforeEach(function() { 
    isSpecPhase = true; 
}); 

Убедитесь определить beforeEach перед всеми другими вашими сьютов, так что он работает перед каждым из ваших спецификаций. В вашей функции утилиты вы могли бы проверить, isSpecPhase === true, и в противном случае исключить исключение.

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