У меня есть файл A, который я хочу протестировать
let isDbAvailable = async () => {
return t/f
}
const mainFunction = () => {
isDbAvailable().then((status)=>{
if (status){
//if db is available do this
} else {
// do that
}
});
}
exports.mainFunction = () => mainFunction();
В моем первом интеграционном тесте я хочу протестировать сценарий, когда db запущен и работает, а во втором тесте я хочу протестировать сценарий, где db не доступно.
итак, у меня есть тестовый файл
const makeRequest = (resource, count, done) => {
chai.request(url)
.put(`/api/myCoolApi/${resource}`)
.send({ 'something': 'my something' })
.end(function (err, res) {
if (res) {
if (count < 3) {
res.should.have.status(200);
res.body.should.eql({ ok: 200 });
makeRequest(resource, ++count, done);
} else {
res.should.have.status(429);
res.body.should.eql(string['erroro_err']);
done();
}
} else {
done(err);
}
});
};
it('test when db is down', function (done) {
makeRequest('something', 0, done);
});
Вопрос. Как заставить isDbAvailable () возвращать true в первом сценарии и false во втором?
Я думал, что смогу импортировать свой файл A в тест
const myModule = rewire('../../src/A')
, а затем заглушить его ?
it('test when db is down', function (done) {
const stub = sinon.stub(myModule.__get__("isDbAvailable"), 'create').returns(false);
makeRequest('something', 0, done);
});
Но я полагаю, что мой синтаксис неверен?
Я использую chai и sinon для проверки интеграции.