您如何在nock内部模拟函数?

时间:2020-05-18 19:06:41

标签: express jestjs nock

(代码已被混淆-可能有一些小错误)

我有一个玩笑的集成测试,我想利用nock,也想在其中模拟一个函数。运行测试时,我可以看到我的模拟没有在运行(没有显示控制台,也没有任何控制台来自模拟的数据,只是原始导入)。

是否无法在nock内模拟函数,或者我在这里做错了什么?

快递代码

import passport from 'passport';

router.post('/return', (req: Request, res: Response, next) =>
  passport.authenticate(
    'azuread-openidconnect',
    { session: false },
    async (err: Error | null, user: GraphUser) => {
      if (err) {
        return res.status(400);
      }

      console.log('HERE'); // This is hit
      if (user) {
        return res.json(user)
      }
       // This is where I land because User data isn't populated from the mock
      return res.status(400); 
   }
);

笑话

jest.mock('passport', () => ({
  authenticate: (a, b, callback) => {
    console.log('THERE'); //This is never hit
    callback('test', {
      oid: 'oid',
      email: 'email',
    });
  },
}));

describe('/return', () => {
  it('returns a user', () => {
      await apiHelper.request
        .post('/return')
        .set('Cookie', [
          'redirect_url=http://localhost:3000/authorize',
        ])
        .send('id_token=fakeToken')
        .expect(200)
  });
});

0 个答案:

没有答案