2015-01-06 24 views
6

Sono nuovo di mocha e should.js. Sto cercando di controllare lo stato della risposta ma mi dà TypeError: Object #<Assertion> has no method 'status' Il codice è simile a questo:res.should.have.status mi dà errore

describe('Local signup', function() { 
    it('should return error trying to save duplicate username', function(done) { 
     var profile = { 
     email: '[email protected]', 
     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(); 
      }); 
    }); 

Ho anche notato che, anche se ho dichiarato var should = require('should');, mio ​​IDE mi avvisa che 'dovrebbe' è una variabile locale inutilizzato . Non so davvero perché.

+0

Si esegue questo in un browser? – plalx

+0

@plalx Contrassegnato con 'node.js'. –

+0

@YuryTarabanko Lo so, ma nei documenti dice che 'status' non fa parte della build del browser, quindi mi sono insospettito. – plalx

risposta

9

Prova

res.status.should.be.equal(400); 

o

res.should.have.property('status', 400); 

E di " 'dovrebbe' è una variabile locale inutilizzato". È vero. Non si dovrebbe usare direttamente. Solo effetti collaterali. Prova invece a require('should');.

+0

Grazie Yury, funziona, ma perché non 'res.should.have.status (400);' lavoro? Ho trovato molti esempi online, usano anche res.should.have.status(). – Charlie

+0

Credo che sia necessario un pacchetto aggiuntivo https://www.npmjs.com/package/supertest-chai –

+0

Non si tratta di 'chai'. –

2

In aggiunta alla risposta di Yury. C'è il pacchetto should-http, che contiene l'asserzione .status(code). È necessario richiedere da qualche parte nel codice e verrà aggiunto a should.js.

2

posizionare la linea:

require('should-http'); 

da qualche parte nel codice. Es .:

require('should-http'); 

describe('Test Something', function() { 
    ... 
Problemi correlati