JS область действия функции определена в объекте, не работающем для покрытия кода - PullRequest
1 голос
/ 29 апреля 2020

У меня есть функция, которая определена в стороне объекта. Я использовал Qunit для написания тестовых случаев. Когда я пытаюсь сгенерировать отчет о покрытии кода, выдается сообщение об ошибке. Тест var не определен.

JS file

$(function(){
var obj = {
        testFunction: function () {
            return true
        }
    }
});

Qunit test case

QUnit.test("testFunction", function (assert) {
    assert.equal(obj.convertPostCode(), true, "We expect return true");
});

1 Ответ

2 голосов
/ 29 апреля 2020

Во-первых, $ будучи jquery, рассматривает первый параметр как селектор, но по-прежнему выполняет функцию, но возвращает объект jquery.

, во-вторых, объект obj определен в пределах этой функции и выиграл ' не быть доступным в вашей области тестирования.

чтобы сделать его доступным, определите obj снаружи либо на том же уровне, что и тест, либо на один или несколько уровней выше, чем тест, установите его значение внутри функции внутри $

пример

   var obj;
$(function(){
 obj = {
        convertPostCode: function (postcode) {
            var len = postcode.length,
                index = 0;
            switch (len) {
                case 5:
                    index = 2;
                    break;
                case 6:
                    index = 3;
                    break;
                case 7:
                    index = 4;
                    break;
                default:
                    break;
            }
            return postcode.substr(0, index) + " " + postcode.substr(index);
        }
    }
});

Предполагая, что тест находится на том же уровне, теперь вы должны иметь доступ к obj

...