Как установить тайм-аут на крючок в мокко?
Я хочу установить значение тайм-аута до того, как подключиться к тестовым случаям мокко. Я знаю, что могу сделать это, добавив -t 10000
в командной строке mocha, но это изменит каждое значение тайм-аута теста. Я хочу найти способ изменить таймаут программно ниже, это мой код:
describe('test ', () => {
before((done) => {
this.timeout(10000);
...
он будет жаловаться на строку this.timeout(1000)
, что timeout
не определен. Как установить тайм-аут до перехвата.
Ответы
Ответ 1
Вам нужно установить тайм-аут в вашем блоке describe
, а не на крючке, если вы хотите, чтобы он повлиял на все тесты в describe
. Однако вам нужно использовать "регулярную" функцию как обратный вызов describe
, а не функцию стрелки:
describe('test', function () {
this.timeout(10000);
before(...);
it(...);
});
Во всех местах, где вы хотите использовать this
в обратном вызове, вы переходите к Mocha, вы не можете использовать функцию стрелки. Вы должны использовать "регулярную" функцию, которая имеет свое собственное значение this
, которое может быть установлено Mocha. Если вы используете функцию стрелки, значение this
будет не таким, каким хочет Mocha, и ваш код не удастся.
Вы можете установить другой тайм-аут для своего до крючка, но есть две вещи, которые следует учитывать:
-
Здесь также вам нужно использовать "регулярную" функцию, а не функцию стрелки, поэтому:
before(function (done) {
this.timeout(10000);
-
Это установит тайм-аут только для крюка before
и не повлияет на ваши тесты.
Ответ 2
Вы также можете вызвать timeout()
для возвращаемого значения из describe
, например:
describe('test', () => {
before(...);
it(...);
}).timeout(10000);
При таком подходе вы можете использовать функции стрелок, потому что вы больше не полагаетесь на this
.
Ответ 3
Вызов this.timeout(milliseconds);
в перед крючком правильно. В любом случае, вам нужно использовать обычную функцию для ловушки (function (done)...
), а не функцию стрелки (done =>...
).
before(
function(done) {
this.timeout(10000);
...
}
);
И причина в том, что функции стрелок не имеют this
привязки.