Я использую mocha, chai и sinon для тестирования моего кода для экспресс-узла.
У меня возникла странная проблема, которая выглядит так, будто sinon не может восстановить заглушки, поэтому в следующем тесте я получаю известную ошибку
Attempted to wrap <method1> which is already wrapped
Вот что я делаю
- Я использую
mocha-steps
вместо it()
для моих тестовых случаев, чтобы они выполнялись последовательно (я хотел убедиться, чтоэто не асинхронное состояние гонки) - Я использую тест sinon для автоматической очистки заглушек, на случай, если я что-то делаю не так
Вотконтрольный пример:
step('should do stuff', test(function () {
const stub1 = sinon.stub(my_model1, 'method1');
chai.request(server)
.get('/endpoint')
.send(body)
.end(function (err, res) {
stub1.restore();
do_various_assertions(err, res);
});
}));
и еще один
step('should do other stuff', test(function () {
const stub1 = sinon.stub(my_model1, 'method1');
chai.request(server)
.get('/endpoint')
.send(slightly_different_body)
.end(function (err, res) {
stub1.restore();
do_various_assertions(err, res);
});
}));
, где я получаю ошибку выше
Attempted to wrap <method1> which is already wrapped
Если я закомментирую заглушку во втором случаеработает отлично. Но почему? Что я делаю не так?