如何使用超级测试将助手存根绑定到 swagger-node?
How to bind a helper stub to swagger-node with supertest?
我正在使用 Swagger Node 和 express 并且我初始化了骨架项目。 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);
}
hello-world/api/helpers/hello_helper.js
'use strict';
module.exports = {getName: getName};
function getName() {
return 'Ted';
}
我想将 helloHelper.getName()
存根到 return '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 识别我的存根?
编辑:感谢以下答案的帮助,此解决方案对我有用。
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();
});
});
你需要initialize/require表达app
在你代理了你的依赖之后。只有这样它才能使用你的存根版本 getName
:
beforeEach(function () {
mockHelloHelper = proxyquire('../../../api/controllers/hello_world', {
'../helpers/hello_helper': {
getName: function () {
return 'Bob';
}
}
});
// initialize/require your app here
request = supertest(app);
});
我正在使用 Swagger Node 和 express 并且我初始化了骨架项目。 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);
}
hello-world/api/helpers/hello_helper.js
'use strict';
module.exports = {getName: getName};
function getName() {
return 'Ted';
}
我想将 helloHelper.getName()
存根到 return '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 识别我的存根?
编辑:感谢以下答案的帮助,此解决方案对我有用。
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();
});
});
你需要initialize/require表达app
在你代理了你的依赖之后。只有这样它才能使用你的存根版本 getName
:
beforeEach(function () {
mockHelloHelper = proxyquire('../../../api/controllers/hello_world', {
'../helpers/hello_helper': {
getName: function () {
return 'Bob';
}
}
});
// initialize/require your app here
request = supertest(app);
});