2015-01-06 26 views
6

Jestem nowy w mocha i should.js. Próbuję sprawdzić stan odpowiedź, ale to daje mi TypeError: Object #<Assertion> has no method 'status' Kod jest tak:res.should.have.status daje mi błąd

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(); 
      }); 
    }); 

Zauważyłem również, że choć zadeklarowały var should = require('should');, mój ide powiadamia mnie, że „powinien” jest nieużywany zmiennej lokalnej . Naprawdę nie wiem dlaczego.

+0

Czy używasz tego w przeglądarce? – plalx

+0

@plalx Oznaczone przez 'node.js'. –

+0

@YuryTarabanko Wiem, ale w dokumentach jest napisane, że 'status' nie jest częścią kompilacji przeglądarki, więc nabrałem podejrzeń. – plalx

Odpowiedz

9

Spróbuj

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

lub

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

I o " 'powinien' jest nieużywany zmiennej lokalnej". To prawda. Nie używaj należy bezpośrednio. Tylko efekty uboczne. Zamiast tego spróbuj require('should');.

+0

Dzięki Yury, działa, ale dlaczego nie "res.should.have.status (400);" praca? Znalazłem wiele przykładów w Internecie, używają także res.should.have.status(). – Charlie

+0

Wierzę, że potrzebujesz dodatkowego pakietu https://www.npmjs.com/package/supertest-chai –

+0

Nie chodzi o 'chai'. –

2

Jako dodatek do odpowiedzi Jurija. Jest pakiet should-http, który zawiera asercję .status(code). Musisz wymagać gdzieś tego w kodzie i zostanie dodany do pliku should.js.

2

Place linia:

require('should-http'); 

gdzieś w kodzie. Np .:

require('should-http'); 

describe('Test Something', function() { 
    ... 
Powiązane problemy