0
測試快遞應用程序時,打樁第三方庫的構造
我有一個簡單的快遞應用程序看起來像這樣:與Supertest
var SendMandrillTemplate = require('send-mandrill-template');
var sendMandrillTemplate = new SendMandrillTemplate('api-key-goes-here');
var app = require('express')();
app.get('/', function(req, res, next) {
sendMandrillTemplate.sendTemplate(
'template-name-goes-here',
'[email protected]', {
value: 123
},
function(err) {
if (err) {
res.send('ERR - ', err)
} else
res.send('DONE')
});
});
module.exports = app;
我出口的應用對象,這樣我就可以在這個安裝單獨server.js
這樣 -
var app = require('./app')
app.listen(1234, function() {
console.log('Running on port 1234');
});
這是爲了使我能夠更容易地使用supertest。
這裏是我的測試,到目前爲止:
var app = require('./app')
var request = require('supertest')
var SendMandrillTemplate = require('send-mandrill-template');
describe('GET /', function() {
var sendTemplateStub;
before(function() {
//I think i need to setup a spy on the created instance of SendMandrillTemplate.sendTemplate
//sendTemplateStub = //?
});
it('calls sendTemplate on sendMandrillTemplate instance', function(done) {
request(app)
.get('/')
.expect(200)
.end(function(err, res) {
if (err) throw err;
//assert sendTemplateStub was called with 'template-name-goes-here'
//etc...
done();
})
})
})
正如你所看到的,我有麻煩捻熄SendMandrillTemplate構造
如果我不newing起來SendMandrillTemplate
一個實例,我可以做些什麼像:
sendTemplateStub = sinon.stub(SendMandrillTemplate, 'sendTemplate')
但當然,在這種情況下,這將不起作用......