У меня есть некоторый код, который я пытаюсь проверить со структурой, как это (за Cleaning up sinon stubs easily):Как использовать синонные песочницы, когда тесты выполняются асинхронно?
function test1() {
// manually create and restore the sandbox
var sandbox;
beforeEach(function() {
sandbox = sinon.sandbox.create();
sandbox.stub(globalVar, "method", function() { return 1; });
});
afterEach(function() {
sandbox.restore();
});
it('tests something', function(done) {
anAsyncMethod(function() { doSomething(); done(); });
}
}
Там затем аналогичная test2() функцию.
Но если я:
describe('two tests', function() {
test1();
test2();
}
я получаю:
TypeError: Attempted to wrap method which is already wrapped
Я сделал некоторые протоколирование, чтобы выяснить порядок выполнения и, кажется, что проблема в том, что он бежит test1 beforeEach()
hook, затем test2 beforeEach()
hook, затем test1 it()
и т. д. Потому что он вызывает второй beforeEach()
, прежде чем он доберется до afterEach()
от первого теста, у нас есть проблема.
Есть ли лучший способ структурировать это?
Но я хотел бы быть в состоянии поставить эти две функции в функции поэтому я могу использовать их для различных тестов. И я хотел бы, чтобы они были автономными, поэтому мне не нужно создавать песочницу и код заглушки каждый раз, когда я их вызываю. Разве это невозможно? –
Я понимаю, что вы имеете в виду. Позвольте мне обновить свой ответ - новичок в форматировании кода в комментариях. –
Дополнительная описательная оболочка - либо она у вас, либо только внутри каждой тестовой функции - делает это. Дополнительный уровень отчетности, но насколько это возможно, возможно. Благодарю. –