2015-04-01 5 views
0

Я пытаюсь написать тест мокки для nodejs, который отправляет данные формы и проверяет, нормально ли ответ (200), и что res.body имеет некоторые свойства, но тест не прошел и я не знаю причину. увеличение тайм-листа не помогло, когда я использую расширение AdvancedRESTclient chrome с данными формы в разделе «Полезная нагрузка», он отлично работает! .type('form') должен быть SuperAgent синтаксисДанные тестовой формы с использованием Mocha для NodeJS

var should = require('should'), 
    assert = require('assert'), 
    request = require('supertest'), 
    superagent = require('superagent'); 

     describe('Data', function() { 

      it('should return status OK (200)', function(done) { 
       this.timeout(20000); 
       request.post('http://xxx:3000/xxx/xxx') 
        .type('form') 
        .send({startDate:"2015-03-08",endDate:"2015-03-24",timeLapse:"day"}) 
        .end(function(err, res) { 
         if (err) { 
          throw err; 
         } 
         assert.ok(res); 
         assert.ok(res.body); 
         assert.equal(res.status, 200); 
         res.body.should.have.property('trial'); 
         done(); 
      }); 
     }); 

и ошибка:

TypeError: undefined is not a function 
     at Context.<anonymous> (C:\Users\user\WebstormProjects\StatsTest\test\getMostRecentData.js:112:17) 
     at Test.Runnable.run (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:233:15) 
     at Runner.runTest (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:387:10) 
     at C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:470:12 
     at next (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:312:14) 
     at C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:322:7 
     at next (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:257:23) 
     at Immediate._onImmediate (C:\Users\user\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:289:5) 
     at processImmediate [as _immediateCallback] (timers.js:358:17) 

ответ

0

Попробуйте это:

var should = require('should'), 
    assert = require('assert'), 
    request = require('supertest')('http://xxx:3000'), 
    superagent = require('superagent'); 

     describe('Data', function() { 

      it('should return status OK (200)', function(done) { 

       request.post('/xxx/xxx') 
        .type('form') 
        .send({startDate:"2015-03-08",endDate:"2015-03-24",timeLapse:"day"}) 
        .end(function(err, res) { 
         if (err) { 
          throw err; 
         } 
         assert.ok(res); 
         assert.ok(res.body); 
         assert.equal(res.status, 200); 
         res.body.should.have.property('trial'); 
         done(); 
      }); 
     }); 
+0

это сработало! благодаря! почему 'request = require ('supertest') ('http: // xxx: 3000'),' строка должна была включать '('http: // xxx: 3000')'? – Isaac

+0

Добро пожаловать, вы можете прочитать документацию 'supertest' для получения дополнительной информации. – Edgar