Javascript res.should.have.status给了我一个错误

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

我是摩卡新手,应该是.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',
        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我在terminal
res.should.have.status()中运行测试
是只有在实现了
should
习惯用法后才可用的东西。换言之,发生错误的原因可能是:用于提供
should
的包未实现
状态,或者包未正确初始化,或者由于其他原因。这个问题中没有任何内容表明包提供了什么
应该
。谢谢Yury,它可以工作,但是为什么“res.should.have.status(400);”工作我在网上找到了很多例子,它们也使用res.should.have.status()。我相信您需要额外的软件包,而不是
chai
expect(res.status).to.be.eq(400);