Node.js 如何使用sinon模拟带有req和res参数的函数?
我想在sinon上使用mock和stub通过一些测试。 controller.js:Node.js 如何使用sinon模拟带有req和res参数的函数?,node.js,sinon,Node.js,Sinon,我想在sinon上使用mock和stub通过一些测试。 controller.js: const User = require('./models/user'); module.exports.userRead = function userRead(req, res) { User .query() .then(users => { res.render('results', {data: users}); }) .catch((err) => { re
const User = require('./models/user');
module.exports.userRead = function userRead(req, res) {
User
.query()
.then(users => {
res.render('results', {data: users});
})
.catch((err) => {
res.render('error');
});
user.test.js:
const sinon = require('sinon');
const controller = require('../controler');
const Provider = require('../provider');
describe('Testing userRead', () => {
const appStub = sinon.stub(Provider,'query');
test('should returns users', () => {
controler.userRead(req, res);
appStub.restore();
appStub.verify();
});
});
测试无法通过,我遇到以下错误:
ReferenceError: req is not defined
我怎样才能解决这个问题?在您的代码中,没有所谓的
req
在您的特定实例中,只需传入{}
(空对象),因为您的控制器尚未对req
执行任何操作
const sinon = require('sinon');
const controller = require('../controler');
const Provider = require('../provider');
describe('Testing userRead', () => {
const appStub = sinon.stub(Provider,'query');
test('should returns users', () => {
controler.userRead({}, res);
appStub.restore();
appStub.verify();
});
});
另一个(更好的)选择是使用
我尝试了这个,现在我得到了这个错误
TypeError:cannotreadproperty'then'of undefined
,这实际上是一个单独的问题<代码>用户也需要模拟。这个问题已经被回答了很多次-搜索用sinon模仿猫鼬
const sinon = require('sinon');
const httpMocks = require('node-mocks-http');
const controller = require('../controler');
const Provider = require('../provider');
describe('Testing userRead', () => {
const appStub = sinon.stub(Provider,'query');
const req = httpMocks.createRequest();
//can setup req here
test('should returns users', () => {
controler.userRead(req, res);
appStub.restore();
appStub.verify();
});
});