2017-12-08 12 views
0

모카를 사용하여 API를 테스트하고 있습니다. 사용자 파일에 포함 된 사용자 경로를 테스트 할 파일을 만들었습니다. 또한 각각의 테스트 전후에 빈 채워지고 비게 될 빈 JSON 파일을 만들었습니다.TypeError : app.address가 함수가 아닙니다.

파일 테스트를 포함 -> 사용자 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 :

TypeError: app.address is not a function 
:

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('mongodb://WecodeAdmin:AG56_'+'%25'+'[email protected]: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"); 
}); 

내 테스트 파일을 실행 나는 오류가

app.js 또는 user-routes.spec.js에서 문제가 발생했음을 확신합니다. 내 app.js의 끝에 module.exports = server;을 추가 테스트했습니다. , 나는 또한 agant 키워드에 대해 이야기하는 것들을 보았습니다. 그러나 나는 그것에 대해 모른다는 것을 알지 못합니다. 거래가 어떤 아이디어입니까?

+0

, 그것은 당신에게 스택 추적 정확히 무엇을 보여 주어야한다 오류 코드는 다음과 같습니다. 질문에 해당 정보를 포함 시켜서 오류가 발생한 위치를 파악해야합니다. – jfriend00

답변

2

app.js이 Express 서버를 내보내므로 user-routes.spec.js으로 가져올 수 있어야합니다.

먼저 변수에 app.listen의 결과를 할당 한 다음에 수출로 그 변수를 설정하여 app.js : 당신이 그런 오류가 발생하는 경우

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

module.exports = server;