在使用Supertest测试express应用程序时,存根第三方库的构造函数
Stubbing a constructor of a third party library when testing express app with 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@here.com', {
value: 123
},
function(err) {
if (err) {
res.send('ERR - ', err)
} else
res.send('DONE')
});
});
module.exports = app;
我导出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构造函数
时遇到了麻烦如果我没有新建一个SendMandrillTemplate
实例,我可以这样做:
sendTemplateStub = sinon.stub(SendMandrillTemplate, 'sendTemplate')
但是,当然,在这种情况下,这将不起作用…
你可以做一些简单的事情
var SendMandrillTemplate = require('send-mandrill-template');
sinon.stub(SendMandrillTemplate.prototype, 'sendTemplate');
相关文章:
- 与运行长作业(javascript,node.js)的第三方API同步的最佳实践
- 如何检测第三方广告服务器请求
- 未调用 Sinon 存根
- 如何侦察内部存根返回与西农
- 将下载链接从web浏览器传递给第三方应用程序
- 在iOS和Android上使用React native时,我还能使用本机第三方lirbraries吗
- 使用jquery cookie的第三方cookie
- markrwithlabel.js(第三方)原始文件链接断开
- 开发第三方小部件-Angular vs jQuery vs普通的旧JS
- 处理第三方库发送的ajax请求的开始和结束事件
- 在浏览器中检测本机或第三方PDF插件
- 在JS中获取当前IP(无第三方服务)
- CRM RibbonWorkbech-第三方图书馆
- Dart和第三方CSS和JS框架
- javascript api,用于在第三方域上存储身份验证令牌
- 何时使用Meteor.methods和使用存根
- 从第三方服务器发出解析json的问题
- 将本地文件传递给第三方框架
- 在使用Supertest测试express应用程序时,存根第三方库的构造函数
- 测试节点快速端点和存根第三方 API 调用