Node.js Chai测试错误Uncaught AssertionError:预期{Object(stringValue,kind,…)具有属性';标题';

Node.js Chai测试错误Uncaught AssertionError:预期{Object(stringValue,kind,…)具有属性';标题';,node.js,testing,mocha.js,chai,Node.js,Testing,Mocha.js,Chai,我想和柴一起做个测试。我想测试一下视频细节。但我有个错误。我哪里做错了 movieTest.js页面 const chai = require('chai'); const chaiHttp = require('chai-http'); const should = chai.should(); const expect = require('chai').expect const server = require('../../app'); chai.use(chaiHttp); le

我想和柴一起做个测试。我想测试一下视频细节。但我有个错误。我哪里做错了

movieTest.js页面

const chai = require('chai');
const chaiHttp = require('chai-http');
const  should = chai.should();
const expect = require('chai').expect
const server = require('../../app');

chai.use(chaiHttp);

let token, movieId;

// Movies Testing

// Authenticate Test
describe('/api/movies tests', () => {
    before((done) => {
        console.log('İlk Önce Token Kontrol Yapılıyor');
        chai.request(server)
            .post('/authenticate')
            .send({ username: 'mms', password: '123' })
            .end((err, res) => {
               token = res.body.token;
               console.log('Kullanıcı Token:', token);
               done();
            });
    });
    describe('/GET/:movie_id movie', () => {
        it('it should GET a movie by the given id', (done) => {
            chai.request(server)
                .get('/api/movies/' + movieId)
                .set('x-access-token', token)
                .end((err, res) => {
                    res.should.have.status(200);
                    console.log(res.body, movieId);
                    res.body.should.be.a('object');
                    res.body.should.have.property('title');
                    res.body.should.have.property('director_id');
                    res.body.should.have.property('category');
                    res.body.should.have.property('country');
                    res.body.should.have.property('year');
                    res.body.should.have.property('imdb');
                    res.body.should.have.property('_id').eql(movieId);
                    done();
                });
        });
    });
});
控制台

/GET/:movie_id movie
{ username: 'mms', iat: 1602422017, exp: 1602432016 }
GET /api/movies/undefined 200 2.532 ms - 94
{
  stringValue: '"undefined"',
  kind: 'ObjectId',
  value: 'undefined',
  path: '_id',
  reason: {}
} undefined
      1) it should GET a movie by the given id


  3 passing (2s)
  1 failing

  1) /api/movies tests
       /GET/:movie_id movie
         it should GET a movie by the given id:
     Uncaught AssertionError: expected { Object (stringValue, kind, ...) } to have property 'title'
      at /Users/Macit/Desktop/CALISMALAR/ISLER/WEB/JS-NODEJS/MovieApi/test/api/movieTest.js:89:42
      at Test.Request.callback (node_modules/superagent/lib/node/index.js:716:12)
      at /Users/Macit/Desktop/CALISMALAR/ISLER/WEB/JS-NODEJS/MovieApi/node_modules/superagent/lib/node/index.js:916:18
      at IncomingMessage.<anonymous> (node_modules/superagent/lib/node/parsers/json.js:19:7)
      at endReadableNT (_stream_readable.js:1184:12)
      at processTicksAndRejections (internal/process/task_queues.js:80:21)



npm ERR! Test failed.  See above for more details.
根据最近的测试,我的电影ID有问题。但我找不到问题所在。在这方面我需要你的支持


我的其他测试都成功通过了。但是我没能让这个测试成功。

@robertklep help请帮忙从外观上看,根据你的测试,这是一个正常的失败。无论您调用的API是以
undefined
作为
movieId
Hey@AndrewNolan更新问题的字符串值请求的,请添加my movie.js文件。帮助please@MMsari您在哪里为此行定义了movieId
.get('/api/movies/'+movieId)
?对服务器的请求显示undefined
GET/api/movies/undefined 200 2.532 ms-94
const express = require('express');
const router = express.Router();


//Models
const Movie = require('../models/Movie');


/* POST movie listing. */
router.post('/', (req, res, next) => {
  //res.send('içerik buraya geliyor');

  const { title, imdb, category, country, year } = req.body;
  const movie = new Movie(req.body);

  const promise = movie.save();
  //burada tüm datayı ekrana basıyoruz.
  promise.then((data) => {
    res.json({data, status : 'Yeni film başarılı bir şekilde eklendi', code: 'AD001'});
    //hataları yakalıyoruz
  }).catch((err) => {
    res.json({err, status : 'Hoops! Bir hata meydana geldi', code : 'ERR001'});
  });
});

//Top 3 list
router.get('/top3', (req, res) => {
  // datayı bul ve ekrana bas
  const promise = Movie.find({ }).limit(3).sort({ imdb: -1 });
  promise.then((data) => {
    res.json(data);
    //hatayı yakala
  }).catch((err) => {
    res.json(err);
  })
});

// Tüm data listesini geçtiğimiz kısım
router.get('/', (req, res) => {
  const promise = Movie.aggregate([
    {
      $lookup: {
        from:'directors',
        localField:'director_id',
        foreignField:'_id',
        as:'director'

      }
    },
    {
      $unwind:'$director'
    }
  ]);

  promise.then((data) => {
    res.json(data);
    //hatayı yakala
  }).catch((err) => {
    res.json(err);
  })
});

router.get('/:movie_id', (req, res, next) => {
  const promise = Movie.findById(req.params.movie_id);
  promise.then((movie) => {
    if (!movie)
      next({ message: 'The movie was not found', code: 'FND001' });
    res.json(movie);
  }).catch((err) => {
    res.json(err);
  })
});
router.put('/:movie_id', (req, res, next) => {
  const promise = Movie.findOneAndUpdate(
      req.params.movie_id,
      req.body,
    {
      new: true
    }
  );
  promise.then((movie) => {
    if (!movie)
      next({ message: 'Movie files was not update', code:' UP001' });
    res.json({movie, status : 'Başarılı şekilde güncellendi'});
  }).catch((err) => {
    res.json(err);
  })
});
// data silme işlemi
router.delete('/:movie_id', (req, res, next) => {
  const promise = Movie.findByIdAndRemove(req.params.movie_id);
  promise.then((movie) => {
    if (!movie)
      next({ message: 'Data not found', code: 'NT001' });
    res.json({movie, status: 'Başarılı bir şekilde silindi', code: 'DL001'});
  }).catch((err) => {
    res.json(err);
  })
});

// Between

router.get('/between/:start_year/:end_year', (req, res) => {
  const { start_year, end_year } = req.params;
  // datayı bul ve ekrana bas
  const promise = Movie.find(
      {
        year: { "$gte": parseInt(start_year), "$lte": parseInt(end_year) }
      }
    );
  promise.then((data) => {
    res.json(data);
    //hatayı yakala
  }).catch((err) => {
    res.json(err);
  })
});

module.exports = router;