我在让 Sinon 的存根正常工作时遇到问题。当我存根list
并retro
运行测试时,app.get('/retro', retro.list)
正在执行原始函数retro.list
而不是存根。由于发生这种情况,测试失败,因为存根callCount
为 0。
我对coffeescript更熟悉,我也以同样的方式存根。是否有一些我不了解 Javascript 的作用域,或者它的require('../routes/retro')
工作原理,或者在andretro
中不一样的地方。app.js
test.js
非常感谢下面的帮助和代码。
测试.js:
var request = require('supertest')
, retro = require('../routes/retro')
, app = require('../app')
, sinon = require('sinon');
require('should');
describe('GET /retro', function() {
// less involved, but maybe stupid to test
it('should call retro.list', function(done) {
var stub = sinon.stub(retro, 'list');
request(app)
.get('/retro')
.end(function(err, res){
stub.callCount.should.equal(1);
if (err) return done(err);
done();
})
})
})
应用程序.js:
var express = require('express')
, config = require('./config')
, routes = require('./routes')
, retro = require('./routes/retro');
var app = express();
config(app);
app.get('/', routes.index);
app.get('/retro', retro.list);
module.exports = app;
复古.js:
var retro = {
list: function(req, res){
console.log('actual called');
res.send("respond with a resource");
}
}
module.exports = retro;