Я пытаюсь начать тестирование в своих проектах, и некоторые вещи я могу проверить правильно, а другие нет.Вот функция, которую я хочу проверить.
exports.rateReview = async (req, res, next) => {
try {
const review = await Review.findById(req.body.id);
if (review) {
if (req.body.type === 'like') await review.like();
if (req.body.type === 'dislike') await review.dislike();
}
res.send('Ok');
} catch (err) {
console.log(err);
}
}
Я пытаюсь проверить, если функции like () и dislike () вызываются в зависимости от req.body.type.Итак, вот мой тестовый файл.
const sinon = require('sinon');
const chai = require('chai');
const sinonChai = require("sinon-chai");
const mongoose = require('mongoose');
const seriesController = require('../../../../src/series-search/controllers/series.controller');
const Review = require('../../../../src/series-search/models/Review');
const expect = chai.expect;
chai.use(sinonChai);
let spyFindById, spyLike, spyDislike;
beforeEach(() => {
spyLike = sinon.spy(Review.prototype, 'like');
spyDislike = sinon.spy(Review.prototype, 'dislike');
spyFindById = sinon.stub(Review, 'findById').returns({});
});
afterEach(() => {
spyLike.restore();
spyDislike.restore();
spyFindById.restore();
});
describe('Series controller', () => {
describe('search()', () => {
});
describe('addReview()', () => {
it('should call findById() with review id');
});
describe('rateReview()', () => {
it('should call review.like() if type is like', (done) => {
const req = {
body: {
id: '123456',
type: 'like'
}
};
const res = {
send: sinon.stub()
};
const spyLike = sinon.spy(review, 'like');
seriesController.rateReview(req, res, null);
expect(spyLike).to.have.been.calledOnce;
done();
});
it('should call review.dislike() if type is dislike');
});
});
Тест продолжает проваливаться, так как он говорит, что ожидает, что «like» был вызван один раз, но это не так.Я много чего пробую и ищу в Google, но не могу заставить его работать.Если у кого-то есть идеи, я был бы признателен.
Спасибо!