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,
        );
};

0 ответов

Другие вопросы по тегам