Не рекомендуется ставить тесты в зависимости от состояния, заданного другими тестами. По мере усложнения набора тестов чрезвычайно полезно иметь возможность использовать Моккоgrep
или иметь возможность временно использовать it.only
, чтобы в случае неудачного теста вы могли сконцентрироваться на выполнении только этого теста .Однако, если ваш тест зависит от других тестов, выполняемых перед ним для правильной работы, вы не можете изолировать его.Если вы зайдете в отладчик и установите точку останова на строке, которая будет срабатывать десятки раз перед тем, как вам нужен настоящий тест, это быстро устареет.
В примере кода, который вы показываете, вы можете сделать:
describe(``,()=>{
let t = true;
it(`test1`,()=>assert(t));
it(`test2`,() => {
t = false; // Set the state here.
assert(!t);
});
});
В комментарии Ник предложил установить t
в test1
.Я предлагаю установить его в test2
.С кодом, который я предлагаю выше, вы можете запустить mocha --grep test2
или временно изменить it(`test2`...
на it.only(`test2`...
, и ваш тест будет работать нормально.
Однако я подозреваю, что ваш реальный код более сложный, чем примервы дали и, возможно, используете какой-то значимый код для установки состояния ваших тестов.Если вы хотите отделить код настройки теста от самого теста, вы можете сделать это:
describe(``,() => {
describe("", () => {
let t;
before(() => {
t = someSubtantialInitialization();
});
it(`test1`, () => ...);
});
describe("", () => {
let t;
before(() => {
t = someOtherSubstantialInitialization();
});
it(`test2`,() => ...);
});
});
Mocha имеет before
и beforeEach
ловушки, но не имеет beforeJustThisOneTest
ловушки.Вы можете связать хук с одним тестом, поместив тест и хук в отдельный блок describe
.