vendredi 8 décembre 2017

TypeError: app.address is not a function

I'm using Mocha to test my API, I've created a file to test my users routes which are contained in its custom file. I've also made an empty JSON file which will be filled and emptied respectively before and after each test.

File containing tests --> user-routes.spec.js :

const request = require("supertest")
require('chai').should()
const bodyParser = require("body-parser")

const app = require('./../../app')

const usersFixture = require("../fixtures/users-fixtures")

describe('Courses', () =>{

    beforeEach(() => { usersFixture.up() })
    afterEach(() => { usersFixture.down() })

    describe('Get users list', ()=>{
        it("Should get a list of all users", ()=>{
           return  request(app).get('/courses')
                        .then((res) => {
                            // res.body.should.have.lengthOf(1)
                            // res.body[0].title.should.eql("Ma course")
                        }).catch((err)  =>{
                            console.log(err)
                            throw new Error(err);
                         })
        })
    })
})

app.js :

const mongoose = require("mongoose");
const bodyParser = require("body-parser");
mongoose.Promise = require("bluebird");

const course_router = require('./routes/courses_route');
const user_router = require('./routes/users_route');
const type_course_router = require('./routes/type_courses_route');
const avis_router = require("./routes/avis_router");

const HttpError = require('./errors/http_error')
const NotFoundError = require('./errors/not_found')

const helmet = require("helmet");
const express = require("express");
const cors = require("cors");
const app = express();
const manip = require("./routes/manip");

app.use(helmet());
app.use(cors());
app.use(bodyParser.urlencoded({
    extended: true
}));
app.disable('x-powered-by');

// app.use(file_upload());
app.use(bodyParser.json());
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.set('views',(__dirname +'/views/'));

//Ajout du slug course
app.use('/courses', course_router);
app.use('/users', user_router);
app.use('/type-courses', type_course_router);
app.use('/manip', manip);
app.use('/avis', avis_router);

app.use(function(req, res, next) {
  next(new NotFoundError());
});

app.use(function(err, req, res, next) {
  if (!(err instanceof HttpError)) {
    console.error(err)
    err = new HttpError(err.message || 'Unknown error')
    }
    res.status(err.statusCode)
  res.send(err.toJSON());
});

//Connexion à la bdd
mongoose.connect('http://mongodbWecodeAdmin:AG56_'+'%25'+'ez3j6@ds241055.mlab.com:41055/runmoov_test')
                .then(
                    console.log("Connection à mongolab réussie")
                );

app.listen(3000, function(){
    console.log("API en cours d'exécution sur le port 3000");
}); 

When launching my test file I have an error :

TypeError: app.address is not a function

I'm pretty sure the problem comes from app.js or user-routes.spec.js, I've tested adding module.exports = server; at the end of my app.js, I've also seen things talking about agant keyword but I don't know it is about Any ideas where the deal is ?

Aucun commentaire:

Enregistrer un commentaire