2016-08-17 65 views
5

yani her API için ben özellikle url tanımlamak zorunda olduğunuçağırma yolları ben mocha ve chai i karşıdan karşıya bakacak am büyük bir sorun kullanarak birim test yazmaya çalışıyorum

test.js olduğunu

var expect = require('chai').expect; 
var should = require('chai').should; 
var express = require('express'); 
var chai = require('chai'); 
var chaiHttp = require('chai-http'); 
chai.use(chaiHttp); 

var baseUrl = 'http://localhost:3000/api'; 

describe("Test case for getting all the users", function(){ 
       it("Running test", function(done){ 

        this.timeout(10000); //to check if the API is taking too much time to return the response. 

        var url = baseUrl + '/v1/users?access_token=fd085c73227b94fb3d1d5552b5a62be963b6d068' 

        chai.request(url) 
        .get('') 
        .end(function(err, res) { 
         //console.log('routes>>>>', routes); 
         expect(err).to.be.null; 
         expect(res.statusCode).to.equal(200); // <= Call done to signal callback end 
          expect(res).to.have.property('text'); 
          done();        
        }); 
       }); 
      }); 

Ben bütün yolları doğrudan benim routes.js gelen dosya yerine her url kodlama sert çağırmak almak gerektiğini istemek, o mümkün mü? TIA.

cevap

0

Rotalarınızı doldurmak için bir yönlendirici nesnesi için bir init işlevi oluşturabilirsiniz. Testler ve gerçek kod için bu init işlevini kullanın. Örnek:

// 
// initRouter.js 
// 
function initRouter(router){ 
    router.route('/posts') 
     .post(function(req, res) { 
      console.log('req.body:', req.body) 
      //Api code 
     }); 
    router.route('/posts/:post_id') 
     .get(function(req, res) { 
      console.log('req.body:', req.body) 
      //Api code 
     }) 
    return router; 
} 
module.exports = initRouter; 

// 
// in the consumer code 
// 
var initer = require('./initRouter'); 
app.use('/api', initer(express.Router())); 
0

Sunumda bulunduğunuz örnekte, bazı IP ve PORT aracılığıyla maruz kalan mevcut bir Web sunucusunu test ediyorsunuz. express-mocks-http'u kullanarak, ekspres istek ve yanıt nesnelerini anlatabilir ve bunları doğrudan tanımladığınız rota işlevine iletebilirsiniz. Daha fazla bilgi için paket belgelerine bakın.

+0

Teşekkürler, bir deneyeceğim. –