Какова цель использования "плана" против "конца" в подсистеме / ленте?

Модуль тестирования ленточного подсистемы позволяет заранее определить количество подтверждений с помощью plan метод, а затем он будет автоматически вызывать end для тебя. Почему бы просто не поставить end в конце теста? В чем разница между использованием plan, а также end?

1 ответ

Решение

Первый пример в файле readme показывает ситуацию, когда plan работает но end не будет - асинхронное разрешение теста. В этом случае вы явно не говорите, когда все тесты должны были быть решены, вы говорите, сколько должно в конечном итоге разрешиться:

test('timing test', function (t) {
    t.plan(2);

    t.equal(typeof Date.now, 'function');
    var start = Date.now();

    setTimeout(function () {
        t.equal(Date.now() - start, 100);
    }, 100);
});

Если бы мы использовали endИнтуитивно понятный способ написания этого теста будет следующим:

test('timing test', function (t) {
    t.equal(typeof Date.now, 'function');
    var start = Date.now();

    setTimeout(function () {
        t.equal(Date.now() - start, 100);
    }, 100);

    t.end();
});

... но это завершит тест до того, как у второго утверждения будет шанс для запуска.

Вы можете экстраполировать это далее на любые ситуации, когда необходимо выполнить асинхронный или динамический код.

Другие вопросы по тегам