2017-12-23 6 views
0

홈 루트 '/'에서 GET 요청을 테스트하려고합니다. 경로가 내 파일 root.js에 없습니다. 테스트가 실패하지만 항상 성공하기를 원하기 때문입니다. 이유를 모르겠습니다. 3 개 파일이 있습니다 ./test/test.js, ./server/server.js 및 ./server/routes/index.js모카 및 차이 GET 요청 테스트가 작동하지 않습니다.

/*File: ./test/test.js */ 
 
/* eslint-env mocha */ 
 
const chai = require('chai') 
 
const chaiHttp = require('chai-http') 
 

 
const { expect } = chai 
 
const app = require('../server/server.js') 
 

 
chai.use(chaiHttp) 
 

 
describe('GET Home',() => { 
 
    it('Should return Not found',() => { 
 
    chai 
 
     .request(app) 
 
     .get('/', (err, res) => { 
 
     const result = res.statusCode 
 
     expect(result).to.equal(200) 
 
     }) 
 
    }) 
 
}) 
 

 
/*File: ./server/server.js */ 
 
const express = require('express') 
 
const bodyParser = require('body-parser') 
 
const config = require('./config.js') 
 
const mainRoutes = require('./routes') 
 

 
const app = express() 
 

 
app.set('view engine', 'jade') 
 

 
app.use(bodyParser.urlencoded({ extended: false })) 
 
app.use(mainRoutes) 
 

 
app.listen(config.port,() => { 
 
    console.log(`The application is running on localhost:${config.port}`) 
 
}) 
 

 
module.exports = app 
 

 
/*File: ./server/routes/index.js*/ 
 
const express = require('express') 
 

 
const router = express.Router() 
 

 
// router.get('/', (req, res) => { 
 
// res.render('home') 
 
// }) 
 

 
module.exports = router

+0

server.js를 게시하거나 경로를 정의 할 수 있습니까? –

+0

예, 내 소식을 업데이트했습니다. –

+0

routes/index.js도 재미있을 수 있습니다. 두 가지 문제가있을 수 있습니다 : 1) route/index.js에 아직 경로가 설정되어 있지 않습니다. 2) jade를 사용하고 있습니다. 기본 페이지를 설정했을 수도 있습니다. 실행하고 싶습니다. 로컬로 서버에 연결하고 경로에 대한 GET 요청의 결과를 확인하십시오. 이 작업은 브라우저 또는 우편 배달부에서 수행 할 수 있습니다. –

답변

1

이는 get 실행 비동기 때문에, 어설 션 expect(result).to.equal(200)을 확인하려면 done()으로 전화해야합니다. 그렇지 않으면 라우터 존재 여부에 관계없이 테스트가 항상 통과됩니다. 더 많은 것을 알고 싶다면 page을 확인하고 Caveat을 검색하십시오.

describe('GET Home',() => { 
    it('Should return Not found', (done) => { 
     chai 
      .request(app) 
      .get('/') 
      .end(function (err, res) { 
       const result = res.statusCode 
       expect(result).to.equal(200) 
       done() 
      }) 
    }) 
}) 
관련 문제