2016-08-17 53 views
5

Staram się pisać testy jednostkowe używając mokka i chai, głównym problemem Jestem stoi po drugiej stronie jest to, że dla każdego API muszę konkretnie określić adres URL, czyliWywoływanie trasy dla testu mocha

test.js

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

chcę, aby wszystkie moje trasy powinny powoływać się bezpośrednio z moich routes.js pliku zamiast twarde kodowania każdego URL to możliwe? TIA.

Odpowiedz

0

Możesz utworzyć funkcję init obiektu routera, aby wypełnić swoje trasy. Użyj tej funkcji init zarówno dla testów, jak i dla rzeczywistego kodu. Oto przykład:

// 
// 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

W przedstawionym przykładzie testujesz istniejący serwer sieciowy udostępniany przez niektóre adresy IP i PORT. Korzystając z express-mocks-http można kpić z jawnych obiektów żądania i odpowiedzi i przekazywać je bezpośrednio do zdefiniowanej funkcji trasy. Więcej informacji można znaleźć w dokumentacji pakietu.

+0

Dzięki, spróbuję. –