2016-09-12 3 views
1

В моем контроллере у меня есть оператор, назначающий пустую функцию в переменной на основе условия.Jasmine: проверьте, является ли переменная пустой функцией

var vm = this; 
vm.emptyFunction = angular.isFunction(callback) ? callback : function() {}; 

Как я могу проверить, что это на самом деле vm.emptyFunction пустая функция?

вещи, которые не работают:

expect(vm.emptyFunction).toEqual({}); 
expect(vm.emptyFunction()).toEqual({}); 
expect(vm.emptyFunction).toEqual(() => {}); //using typescript 

Вещь, которая работа:

expect(vm.emptyFunction).toEqual(jasmine.any(Function)); 

Но это будет получить справедливо для любого определения функции.

+1

Почему вы хотите, чтобы проверить для этого случая? Может ли 'emptyFunction' быть определен снаружи, и если это пустая функция, это будет ошибка? Является ли функция пустой по умолчанию и должна быть назначена с надлежащей функцией, чтобы вы тестировали неинициализированный атрибут тестируемого модуля? –

+0

здесь 'callback' вводится в контроллер. Мне нужно проверить, передаю ли я неопределенный 'callback', тогда' vm.emptyFunction' является пустой функцией вместо 'callback'. –

+0

Тогда тестирование типа 'function' в первом случае и проверка того, был ли вызван обратный вызов, должен быть способом. –

ответ

0

Единственное, что я могу придумать, это использовать ту же ссылку на ту же пустую функцию.

var emptyFunction = function {}; 

, а затем использовать

vm.emptyFunction = angular.isFunction(callback) ? callback : emptyFunction; 

Затем тест

expect(vm.emptyFunction).toEqual(emptyFunction); 
+0

В этом случае я должен передать ссылку 'emptyFunction' извне. Здесь 'callback' вводится в контроллер. Мне нужно проверить, не передаю ли 'callback' как undefined, тогда' vm.emptyFunction' должен быть пустой функцией вместо 'callback'. –

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