Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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存根.resolves()未按要求运行_Node.js_Unit Testing_Sinon - Fatal编程技术网

Node.js Sinon存根.resolves()未按要求运行

Node.js Sinon存根.resolves()未按要求运行,node.js,unit-testing,sinon,Node.js,Unit Testing,Sinon,以下是我正在编写测试的函数: ensureUserDoesNotExist(request, response, next) { this.User.findOne({ where: { email: request.body.email }}) .then(user => { if (user) { response.sendStatus(403); } else { next(); } });

以下是我正在编写测试的函数:

ensureUserDoesNotExist(request, response, next) {
  this.User.findOne({ where: { email: request.body.email }})
    .then(user => {
      if (user) {
        response.sendStatus(403);
      } else {
        next();
      }
    });
  }
以下是我无法通过的测试:

it('should return a 403 if a matching user is found', () => {
  mockRequest.body.email = 'test@email.com';
  userController.User.findOne.resolves(true); // This is a previously created sinon stub
  userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext);
  assert(mockResponse.sendStatus.calledWith(403));
});
它失败了,只是声称没有调用存根(不管它值多少钱)


我强烈怀疑这与承诺有关——或者说与西农的互动有关——但在试图弄清楚到底是什么的过程中,我的头脑一片空白。代码按预期的方式工作(或者在我玩它之前最后一次查看时)。有人能帮我吗?

您的断言在结束请求之前进行评估 你需要回报你的承诺

ensureUserDoesNotExist(request, response, next) {
  return this.User.findOne({ where: { email: request.body.email }})
    .then(user => {
      if (user) {
        response.sendStatus(403);
      } else {
        next();
      }
    });
  }
然后在
子句中断言

it('should return a 403 if a matching user is found', () => {
  mockRequest.body.email = 'test@email.com';
  userController.User.findOne.resolves(true); // This is a previously created sinon stub
  userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext).then(() => {
     assert(mockResponse.sendStatus.calledWith(403));
  });
});

在结束请求之前评估您的断言 你需要回报你的承诺

ensureUserDoesNotExist(request, response, next) {
  return this.User.findOne({ where: { email: request.body.email }})
    .then(user => {
      if (user) {
        response.sendStatus(403);
      } else {
        next();
      }
    });
  }
然后在
子句中断言

it('should return a 403 if a matching user is found', () => {
  mockRequest.body.email = 'test@email.com';
  userController.User.findOne.resolves(true); // This is a previously created sinon stub
  userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext).then(() => {
     assert(mockResponse.sendStatus.calledWith(403));
  });
});

测试还必须向Mocha返回一个表示异步测试的承诺。您可以使用
然后
调用返回的值:

it('should return a 403 if a matching user is found', () => {
  mockRequest.body.email = 'test@email.com';
  userController.User.findOne.resolves(true); // This is a previously created sinon stub
  return userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext).then(() => {
      assert(mockResponse.sendStatus.calledWith(403));
  });
});

测试还必须向Mocha返回一个表示异步测试的承诺。您可以使用
然后
调用返回的值:

it('should return a 403 if a matching user is found', () => {
  mockRequest.body.email = 'test@email.com';
  userController.User.findOne.resolves(true); // This is a previously created sinon stub
  return userController.ensureUserDoesNotExist(mockRequest, mockResponse, mockNext).then(() => {
      assert(mockResponse.sendStatus.calledWith(403));
  });
});