如何在单元测试路由时将快速路由调用的控制器存根

时间:2017-03-28 06:44:32

标签: node.js unit-testing express sinon proxyquire

我正在尝试对快速路线进行单元测试,如下所示:

var app = express();
app.get('/',indexController.Index);

在我的单元测试中,我使用的代码如下:

const indexController = {};
indexController.Index = sinon.stub();
const server = proxyquire('../server.js', { './controllers/indexController': indexController }); 
describe('GET /', () => {
  it('index controller should be called', (done) => {
    request(server)
      .get('/')
      .expect(200)
      .end((err, res) => {
        if (err) {
          return done(err);
        }
        sinon.assert.called(indexController.Index);
        return done();
      });
  });
});

你可以看到我想要做的是将控制器存根。但这似乎不起作用(原始控制器似乎被调用而不是存根)。我无法弄清楚原因。 (在控制器和模型上进行单元测试时,同样的方法也有效。)

有人可以解释为什么这不起作用。以及测试这些路由器的任何替代方法。

0 个答案:

没有答案