Сделать так, чтобы тестируемая функция возвращала истину или ложь, чтобы активировать различные сценарии интеграционного тестирования. - PullRequest
0 голосов
/ 10 июля 2020

У меня есть файл 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 для проверки интеграции.

...