Какова цель использования "плана" против "конца" в подсистеме / ленте?
Модуль тестирования ленточного подсистемы позволяет заранее определить количество подтверждений с помощью 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();
});
... но это завершит тест до того, как у второго утверждения будет шанс для запуска.
Вы можете экстраполировать это далее на любые ситуации, когда необходимо выполнить асинхронный или динамический код.