2016-04-01 16 views
0

node.js + expressjs kullanarak bir uygulama geliştirdim ve posta isteğimi test etmek için mocha kullanıyorum.node.js/express/mocha test istek sonrası sorunu

api.post('/api/addreport', function(req, res) { 
    console.log('add report hit..'); //this does not print during testing 
    console.log(req.body); //this does not print during testing 
    res.sendStatus(200); 
}); 

Testim:

var express = require('express'); 
var app = express(); 
var chai = require('chai'); 
var expect = require('chai').expect; 
var should = require('should'); 
var supertest = require('supertest'); 
var server = supertest.agent("https://localhost:3001"); 
var request = require('supertest'); 
var bodyParser = require('body-parser'); 


//Body parser 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

it("should post", function(done){ 
request(app.listen()) 
    .post('/api/addreport/') 
    .send(data) 
    .end(function(res){ 
     console.log('---response---'); 
     console.log(res); //returns null 
     expect(res.status).to.equal(200); //returns status of null 
     done(); 
    }) 
}); 

çalışan mocha ajax sonuçları my sonrası isteğinden yanıtı null ama neden bilmiyorum, çünkü benim test ...

Benim API başarısız içinde:

1) should post: 
Uncaught TypeError: Cannot read property 'status' of null 

Benim veriler:

var data = { 
    report_id: 'abc123' + Math.random(10), 
    project_code: 'test_project_code', 
    startDate: '2016-01-01', 
    endDate: '2016-01-15', 
}; 

Birisi yardımcı olabilir mi?

Şimdiden teşekkürler!

+0

Verileriniz nedir? Ekspres bodyparser'ı kurdunuz mu? –

+0

Merhaba - tüm test bağımlılık paketlerini ve verilerini içerecek şekilde sorumu güncelledim. Ve evet ekspres bodyparser kullanıyorum. –

+0

Hiçbir şeyi test etmiyorsunuz. En azından "done (err)" i çağırırdım. Bu yüzden hiçbir hatanın iade edilmediğini biliyorsunuz. Bazen en yüksek hata, bir hata oluştuğunda tüm koşulları (örneğin 200 kontrol) kontrol etmez. – Nicole

cevap

1

Eğer en üst düzey kullanıyorsanız, herhangi bir bağlantı noktasında uygulamanızı başlatmanızı gerektirmez. Sadece app.listen istek üzerine ekleyin

var express = require('express'); 
var app = express(); 
var chai = require('chai'); 
var expect = require('chai').expect; 
var should = require('should'); 
var supertest = require('supertest'); 
var server = supertest.agent("https://localhost:3001"); 
var request = require('supertest'); 
var bodyParser = require('body-parser'); 


//Body parser 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false })); 

it("should add report", function(done){ 
request(app.listen()) // change here 
.post('/api/addreport/') 
.send(data) 
.expect(200) 
.end(function(err,res){ 
    done(); 
}); 
}); 
+0

Merhaba - Sorumu güncelledim. Ancak, şimdi benim yazıdan yanıt alıyorum 'null' ... neden api aslında geliştirme/üretim modunda çalışıyor çünkü emin değil .. –

+0

Sunucu tarafında herhangi bir konsol.log aldın mı? Eğer bir yönlendirme probleminiz olması mümkün değilse? "Postman" veya "curl" gibi uygulamaları kullanarak test ederseniz sunucudan herhangi bir yanıtınız var mı? –

+0

Merhaba - evet, 'curl --insecure --data '' https: // localhost: 3001/api/addreport' bana sunucu tarafında bir konsol.log çıkışı veriyor –