javascript – res.status在尝试设置状态代码时不是一个函数
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – res.status在尝试设置状态代码时不是一个函数,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1763字,纯文字阅读大概需要3分钟。
内容图文
![javascript – res.status在尝试设置状态代码时不是一个函数](/upload/InfoBanner/zyjiaocheng/735/e1623c5cca50494bb44da23d50bffe5d.jpg)
当试图满足由提供的单元测试设置的规范时,在尝试返回我遇到的方法的状态代码时
TypeError: res.status is not a function
在API实现中运行createUser函数时.它发生在每个方法调用中,例如res.send,res.sendStatus等.即使我将res.status()添加到测试以将其设置在那里,它也会返回相同的错误.
apiTests.js
let chai = require('chai');
let expect = chai.expect;
let sinon = require('sinon');
let sinonChai = require('sinon-chai');
chai.use(sinonChai);
let model = require('../tron_model.js'); // for stubbing only
let api = require('../tron_api.js');
describe('API', function() {
describe('creating users', function() {
it('should return 201 on creating user', function () {
let mockModel = sinon.stub(new model.TronModel());
mockModel.addUser.onFirstCall().returns(new model.User('user','pass'));
let req = {body: {username: 'goatzilla', password: 'x'}};
let res = {end: function(){}};
api.init(mockModel);
api.createUser(req, res);
expect(res.statusCode).to.equal(201);
expect(mockModel.addUser).to.have.callCount(1);
});
});
});
tron_api.js
let model = undefined;
let api = exports;
api.init = function(modelArg) {
model = modelArg;
};
api.createUser = function(req, res) {
model.addUser(req.body.username, req.body.password);
console.log(res);
res.status(201);
};
解决方法:
您使用以下代码模拟了res对象:
let res = {end: function(){}};
没有.status()方法,然后将其传递给你的api.createUser()函数,该函数需要调用res.status()(一个不在你的模拟对象上的方法).模拟对象需要拥有代码调用的每个方法.
此外,您还使用以下方法测试属性res.statusCode:
expect(res.statusCode).to.equal(201);
在您的模拟对象上也不存在.虽然res.status()是Express中的内置功能,但res.statusCode不是文档属性(尽管它确实存在).
你可以像这样添加到你的模拟res对象:
let res = {
end: function(){}
status: function(s) {this.statusCode = s; return this;}
};
让它通过这两个测试.
内容总结
以上是互联网集市为您收集整理的javascript – res.status在尝试设置状态代码时不是一个函数全部内容,希望文章能够帮你解决javascript – res.status在尝试设置状态代码时不是一个函数所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。