Пиша модулни тестове за някои от моите функции и програмата за изпълнение на тестове изглежда има проблем с обвързана функция. Обвързвам функция, така че имам препратка към this вътре във вътрешна функция. Ето кода:
loadStates: function(name, stateName, options) {
if (myModule.getModule(name) !== undefined) {
this.prepState(name, stateName, options);
} else {
var bindForCheck = this.prepState.bind(this);
//module cannot be found check for 5 seconds
$log.warn("Requesting " + name + "...");
var timeToCheck = true;
setTimeout(function() {
timeToCheck = false;
}, 5000);
var check = {
init: function() {
check.checkAgain();
},
checkAgain: function() {
if (timeToCheck) {
if (myModule.getModule(name) !== undefined) {
bindForCheck(name, stateName, options);
} else {
//still doesn't exists
setTimeout(check.checkAgain, 200);
}
} else {
//doesn't exist after 5 seconds
$log.error("Requested module (" + name + ") could not be found at this time.");
}
}
};
check.init();
}
}
Така че проблемът е с
var bindForCheck = this.prepState.bind(this);
Което просто ми позволява да извикам външна функция вътре в функцията check.checkAgain().
Тестовият производител изплюва тази грешка, когато се опитвам да стартирам секцията else на функцията
TypeError: 'undefined' is not a function (evaluating 'this.prepState.bind(this)')
Може да ми е от полза тук, това ме затрудни как да поправя това. Благодаря!