Заглушка Sinon не работает с предыдущим импортом - PullRequest
0 голосов
/ 08 декабря 2018

У меня проблема с промежуточным ПО заглушки.В моем приложении у меня есть приложение nodejs express, которое использует экспресс-маршрут:

class App{
  constructor(){
   this.app = express();
   ...
   ...
   this.app.use('/api/user', userRouting);
   }
 }
 export default App;

Этот userRouting использует промежуточное ПО, которое я хочу подписать.

В моем тестовом каталоге у меня есть следующие файлы:

  • brandRouting.js
  • userRouting.js

Все хорошо работает без файла brandRouting.

Файл userRouting.js:

describe('user routing test', () => {
  before(()=>{
    sinon.stub(tokenService, 'verifyToken').callsFake(function(req, res, next) {
     return next();
  });
   App = require('../../src/app');
   server = new App.default().app.listen(3000);

   after(()=>{
     sinon.restore();
     server.close();
  });
  it('should create user', (done)=> {
    sinon.stub(userController, 'createUser').resolves('user created');      
    chai.request(server)
      .post('/api/user')
      .end((err, res) => {
        expect(res.text).to.be.equal('user created');
        done();
      });

  });
});

Проблема возникает, когда я включаю тесты в brandRouting.js.Он запускается до пользовательских тестов, а заглушка промежуточного программного обеспечения в userRouting не работает, ведет себя нормально.

describe('brand routing test', () => {
  before(()=>{
   App = require('../../src/app');
   server = new App.default().app.listen(3000);

   after(()=>{
     sinon.restore();
     server.close();
  });
});
...