AssertionError: Target cannot be null or undefined

AssertionError: Target cannot be null or undefined

我正在开发这个测试套件,这让我很沮丧,因为我不断收到此错误:

1) BlogPost API resource
       GET endpoint
         should return all existing posts:
     AssertionError: Target cannot be null or undefined.
      at D:\Projects\Thinkful\mongooseBlog02\blog-app-mongoose-challenge-solution\test\test-blog-integration.js:128:54
      at <anonymous>
      at process._tickCallback (internal/process/next_tick.js:188:7)

这是参考我的 test-blog-integration.js 文件中的第 128 行:

describe('GET endpoint', function() {

    it('should return all existing posts', function() {
      // strategy:
      //    1. get back all restaurants returned by by GET request to `/restaurants`
      //    2. prove res has right status, data type
      //    3. prove the number of restaurants we got back is equal to number
      //       in db.
      //
      // need to have access to mutate and access `res` across
      // `.then()` calls below, so declare it here so can modify in place
      let res;
      return chai.request(app)
        .get('/posts')
        .then(function(_res) {
          // so subsequent .then blocks can access response object
          res = _res;
          expect(res).to.have.status(200);
          console.log("testKC");
          // otherwise our db seeding didn't work
          expect(res.body.posts).to.have.lengthOf.at.least(1);
          return allPosts.count();
        })
        .then(function(count) {
          expect(res.body.posts).to.have.lengthOf(count);
        });
    });

我已尝试 postsallPosts,但我仍然遇到同样的错误。我从 models.js 文件中得到 allPosts

'use strict';

const mongoose = require('mongoose');
mongoose.Promise = global.Promise;

const blogPostSchema = mongoose.Schema({
  author: {
    firstName: String,
    lastName: String
  },
  title: {type: String, required: true},
  content: {type: String},
  created: {type: Date, default: Date.now()}
});


blogPostSchema.virtual('authorName').get(function() {
  return `${this.author.firstName} ${this.author.lastName}`.trim();
});

blogPostSchema.methods.serialize = function() {
  return {
    id: this._id,
    author: this.author,
    content: this.content,
    title: this.title,
    created: this.created
  };
};

const BlogPost = mongoose.model('allPosts', blogPostSchema);

module.exports = { BlogPost };

它出现在您的一个 expect 语句中,您期望长度为 XXX 等的对象未定义或为 null,并且没有可供比较的长度属性。因此,期望它具有任何值的长度的断言是失败的。