TypeError:无法读取undefined的属性'splice'

时间:2017-12-07 21:55:42

标签: json node.js express mocha body-parser

我已经创建了一个fixture文件来处理用于编写测试的JSON数据。

在每次测试之前,我希望我的数据填充种子数据。 每次测试后,我希望我的数据为空

Courses.json:

[
  {
    "id": 1,
    "title": "Ma course"
  }
]

CoursesFixture.js:

const { courseList } = require('./courses')

mockData = [
  {
    "id": 1,
    "title": "Ma course"
  }
]

module.exports = {
  up: () => {
    courseList.splice(0)
    courseList.push.apply(courseList, mockData)
  },

  down: () => {
    courseList.splice(0)
  }
}

CoursesTest.js:

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

const app = require('./../../app')
app.use(bodyParser.json())

const listeDeCourses = require("../fixtures/courses")
const listeDeCoursesFixture = require("../fixtures/coursesFixture")

describe('Courses', () =>{

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

    describe('Delete course list', ()=>{
        it("Should delete a list of course", ()=>{
           return  request(app).get('/course')
                        .then((res) => {
                           res.body.should.have.lengthOf(1)
                           request(app).delete('/course').send({"id":"1"})
                           .then((res) => {
                                res.body.should.have.lengthOf(0)
                           })

                        }).catch((err)  =>{
                            throw new Error(err);
                         })
                    })
                })
    describe('Create course list', () =>{
        it("Should create a list of courses", () =>{
            return request(app).post('/course').send({"id":3,"title":"Première course"}).then((res) => {
                res.status.should.be.eq(200)
                const listCourses = res.body 
                const lastCourse = res.body[1]
                listCourses.should.be.a('array')
                lastCourse.id.should.be.eq(3)
                lastCourse.title.should.be.eq("Première course")
                listCourses[listCourses.length - 1].should.be.eq(lastCourse)
            }).catch((err) => {
                throw new Error(err)
            })
        })
    })

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

我的问题是,当我启动测试时出现错误:

TypeError: Cannot read property 'splice' of undefined

我认为问题出现在CoursesFixture.js中,肯定是语法错误,但我无法找到它的位置。

1 个答案:

答案 0 :(得分:1)

const { courseList } = require('./courses')应为const courseList = require('./courses')