Javascript res.should.have.status给了我一个错误
我是摩卡新手,应该是.js。我试图检查响应的状态,但它给了我Javascript res.should.have.status给了我一个错误,javascript,node.js,mocha.js,should.js,Javascript,Node.js,Mocha.js,Should.js,我是摩卡新手,应该是.js。我试图检查响应的状态,但它给了我TypeError:Object#没有方法“status”代码如下: describe('Local signup', function() { it('should return error trying to save duplicate username', function(done) { var profile = { email: 'abcd@abcd.com', pass
TypeError:Object#没有方法“status”
代码如下:
describe('Local signup', function() {
it('should return error trying to save duplicate username', function(done) {
var profile = {
email: 'abcd@abcd.com',
password: 'Testing1234',
confirmPassword: 'Testing1234',
firstName: 'Abc',
lastName: 'Defg'
};
request(url)
.post('/user/signup')
.send(profile)
.end(function(err, res) {
if (err) {
throw err;
}
res.should.have.status(400);
done();
});
});
我还注意到,尽管我声明了var-should=require('should')代码>,我的ide通知我“应该”是未使用的局部变量。我真的不知道为什么 试试看
res.status.should.be.equal(400);
或
关于“'should'是一个未使用的局部变量”。这是真的。你不应该直接使用should。只有副作用。尝试require('should')代码>。作为Yury答案的补充。有一个包,其中包含.status(code)
断言。您需要在代码中的某个地方使用它,它将被添加到should.js。放置行:
require('should-http');
在代码的某个地方。例如:
require('should-http');
describe('Test Something', function() {
...
我会切换到expect
:
expect(res.status).to.be.eq(400);
你是在浏览器中运行这个吗?@plalx标记了node.js
@YuryTarabanko,我知道,但文档中说status
不是浏览器构建的一部分,所以我怀疑。@plalx我在terminalres.should.have.status()中运行测试
是只有在实现了should
习惯用法后才可用的东西。换言之,发生错误的原因可能是:用于提供should
的包未实现状态,或者包未正确初始化,或者由于其他原因。这个问题中没有任何内容表明包提供了什么应该。谢谢Yury,它可以工作,但是为什么“res.should.have.status(400);”工作我在网上找到了很多例子,它们也使用res.should.have.status()。我相信您需要额外的软件包,而不是chai
。
expect(res.status).to.be.eq(400);