如何绑定一个辅助存根到超级特权的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(); }); }); 

       

网上收集的解决方案 "如何绑定一个辅助存根到超级特权的swagger-node?"

你需要初始化/需要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); });