Рабочие модульные тесты на вложенных функциях

Это происходит потому, что вы используете asynchronous function, то есть $.ajax(). Вот почему ваш оператор console.log(arrayen.length) выполняется первым, а затем вы получаете данные.

Для запуска вашей программы добавьте console statement внутрь success callback. Он убедится, что длина будет напечатана, как только вы получите данные с сервера.

Что такое AJAX?

10
задан Pyrolistical 28 November 2008 в 23:55
поделиться

3 ответа

Конвенция Python состоит в том, чтобы назвать "частные" функции и методы с начальным символом подчеркивания. Когда Вы видите начальный символ подчеркивания, Вы знаете, чтобы не попытаться использовать его.

Помните, Python не является Java.

6
ответ дан 3 December 2019 в 15:36
поделиться

Я не думаю, что существует любой шанс получить доступ внутренний () от пространства имен экстерна.

Однако, по-моему, то, что Вы сохраняете внутренними () вложенный, подразумевает, что единственный "контракт", который действительно имеет значение, является внешним () один. внутренний () часть реализации, и Вы не должны хотеть тестировать реализацию. Если Вы действительно хотите протестировать внутренний (), сделайте обширные тесты на внешнем () с данными, которые включат все технические возможности внутренних ().

2
ответ дан 3 December 2019 в 15:36
поделиться

внутренний не существует, до внешний делает его. Необходимо или переместиться внутренний до функции верхнего уровня для тестируемости или иметь внешний тестовый тест все возможные пути выполнения себя и внутренний.

Действительно обратите внимание, что внутренняя функция не является простой функцией, это - закрытие. Рассмотрите этот случай:

def outer(a):
    b = compute_something_from(a)
    def inner():
        do_something_with(a, b)

Это - стандартный компромисс тестируемости. Если Ваша цикломатическая сложность будет слишком высока, то Ваши тесты будут слишком многочисленными.

14
ответ дан 3 December 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: