Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何使用sinon模拟带有req和res参数的函数?_Node.js_Sinon - Fatal编程技术网

Node.js 如何使用sinon模拟带有req和res参数的函数?

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

我想在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) => {
    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();
   });
});