TypeError: Попытка обернуть findById, который уже упакован: модульное тестирование с помощью mocha, sinon, node и mongodb
Я пытаюсь выполнить модульное тестирование своего метода контроллера, и вот что он возвращает, когда я пытаюсь его заглушить:
TypeError: Attempted to wrap findById which is already wrapped
. Я пробовал использовать хуки до и после, но это не помогло. я использую
sinon-express-mock
для req и res и
sinon
для заглушек.
describe('controller getUserData', function() {
beforeEach(function() {
sinon.stub(UserData, "findById");
});
afterEach(function() {
UserData.findById.restore();
});
it('getUserData by Id', async function() {
const mockId = sinon.stub(UserData, 'findById').returns(mockIdData[0]);
req = mockReq();
res = mockRes();
next = null;
req.params.id = mockIdData[0]._id;
await Controller.getUserData(req, res, next);
assert(mockId.calledWith(req.params.id));
assert(res.status.calledWith(200));
});
it('should return 404 when user data is not found', async function() {
sinon.stub(UserData, 'findById').returns(null);
req = mockReq();
res = mockRes();
next = null;
await Controller.getUserData(req, res, next);
assert(res.status.calledWith(404));
});
});
Вот мой метод контроллера:
exports. getUserData = async (req, res, next) => {
const userData = await UserData.findById(req.params.id);
if (!userData) {
res.status(404).send();
}
res.status(200)
.json(
userData,
);
};