如何绑定一个辅助存根到超级特权的swagger-node?
我用express来使用Swagger Node ,并初始化了框架项目。 Swagger project create hello-world
然后在hello-world/api/controllers/hello_world.js
我添加了一个小小的修改,需要一个助手hello_helper.js
并调用它的函数helloHelper.getName()
。
'use strict'; let helloHelper = require('../helpers/hello_helper'); var util = require('util'); module.exports = { hello: hello }; function hello(req, res) { var name = req.swagger.params.name.value || helloHelper.getName(); var hello = util.format('Hello, %s!', name); res.json(hello); }
你好世界/ API /助理/ hello_helper.js
'use strict'; module.exports = {getName: getName}; function getName() { return 'Ted'; }
我想存根helloHelper.getName()
来返回'Bob'
。 我可以轻松地使用: hello-world/test/api/controllers/hello_world.js
// Create stub import of hello_helper mockHelloHelper = proxyquire('../../../api/controllers/hello_world', { '../helpers/hello_helper': { getName: function () { return 'Bob'; } } });
使用supertest我如何让swagger识别我的存根?
编辑:感谢从下面的答案帮助这个解决scheme为我工作。
var app, getNameStub, mockHelloHelper, request; beforeEach(function (done) { // Create stub import of hello_helper mockHelloHelper = proxyquire('../../../api/controllers/hello_world', { '../helpers/hello_helper': { getName: function () { return 'Bob'; } } }); app = require('../../../app'); request = supertest(app); done(); }); ... it('should return a default string', function(done) { request .get('/hello') .set('Accept', 'application/json') .expect('Content-Type', /json/) .expect(200) .end(function(err, res) { should.not.exist(err); res.body.should.eql('Hello, Bob!'); done(); }); });
你需要初始化/需要expression的app
当你有了你的依赖关系。 只有这样它才能使用getName
的stubbed版本:
beforeEach(function () { mockHelloHelper = proxyquire('../../../api/controllers/hello_world', { '../helpers/hello_helper': { getName: function () { return 'Bob'; } } }); // initialize/require your app here request = supertest(app); });