摩卡测试:为什么我的用户身份为空?

丹尼尔

所以我把这个测试套件。不幸的是,我没有远见卓识来测试我从数据库中回来的用户是joe,而我也没有,因为我已经在这里进行了保存“ joe”的测试,即:

const assert = require('assert');
const User = require('../src/user');

describe('Creating records', () => {
  it('saves a user', done => {
    const joe = new User({ name: 'Joe' });

    joe.save().then(() => {
      // Has joe been saved successfully
      assert(!joe.isNew);
      done();
    });
  });
});

它正在过去。我继续创建这些测试:

const mongoose = require('mongoose');
const assert = require('assert');
const User = require('../src/user');
const Comment = require('../src/comment');
const BlogPost = require('../src/blogPost');

describe('Association', () => {
  let joe, blogPost, comment;
  beforeEach(done => {
    joe = new User({ name: 'Joe' });
    blogPost = new BlogPost({
      title: 'Eloquent JavaScript',
      content: 'As programs get bigger, they also become more complex'
    });
    comment = new Comment({ content: 'Love this post' });
    joe.blogPosts.push(blogPost);
    blogPost.comments.push(comment);
    comment.user = joe;

    Promise.all([joe.save(), blogPost.save(), comment.save()]).then(() =>
      done()
    );
  });

  it('saves a relation between a user and a blogpost', done => {
    User.findOne({ name: 'Joe' })
      .populate('blogPosts')
      .then(user => {
        assert(user.blogPosts[0].title === 'Eloquent JavaScript');
        done();
      });
  });

他们通过了,但是当我在这里添加此测试时:

xit('saves a full relation graph', () => {
    User.findOne({ name: 'Joe' })
      .populate({
        path: 'blogPosts',
        populate: {
          path: 'comments',
          model: 'comment',
          populate: {
            path: 'user',
            model: 'user'
          }
        }
      })
      .then(user => {
        assert(user.name === 'Joe');
        assert(user.blogPosts[0].title === 'Eloquent JavaScript');
        assert(
          user.blogPosts[0].comments[0].content ===
            'As programs get bigger, they also become more complex'
        );
        assert(user.blogPosts[0].comments[0].user.name === 'Joe');
        done();
      });
  });

它失败。我在控制台上登录了它,发现对于用户来说我正在返回,null并且不清楚为什么我返回了null。所以这是我终端的输出:

{ _id: 5bb92e5fe6b40e97e21cd95f,
  user: null,
  content: 'Love this post',
  __v: 0 }

当我通过控制台登录检查该测试是否成功时,如下所示:

it('saves a full relation graph', () => {
    User.findOne({ name: 'Joe' })
      .populate({
        path: 'blogPosts',
        populate: {
          path: 'comments',
          model: 'comment',
          populate: {
            path: 'user',
            model: 'user'
          }
        }
      })
      .then(user => {
        console.log(user.blogPosts[0].comments[0]);
        done();
      });
  });

谁能看到我为什么要user: null代替“乔”吗?

阿克里翁

您需要填充使用exec()来获得实际的承诺:

xit('saves a full relation graph', () => {
    User.findOne({ name: 'Joe' })
      .populate({
        path: 'blogPosts',
        populate: {
          path: 'comments',
          model: 'comment',
          populate: {
            path: 'user',
            model: 'user'
          }
        }
      }).exec()
      .then(user => {
        assert(user.name === 'Joe');
        assert(user.blogPosts[0].title === 'Eloquent JavaScript');
        assert(
          user.blogPosts[0].comments[0].content ===
            'As programs get bigger, they also become more complex'
        );
        assert(user.blogPosts[0].comments[0].user.name === 'Joe');
        done();
      });
  });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的测试结果为空,而我却嘲笑了依赖关系?

为什么我的JS promise捕获错误对象为空?

@Autowired字段在测试中始终为空,我缺少什么?

在Rails中,为什么仅在测试中我的邮件正文为空?

为什么我的jQuery空为无效?

身份:为什么user.roles为空?

为什么我的XHR的statusText为空?

为什么我的场景为空?

为什么摩卡咖啡说我的考试不及格?

为什么我的测试功能无法激活用户?

为什么此Perl测试中的* STDERR为空?

即使我正在测试的功能正在记录日志,为什么caplog.text也为空?

为什么我的屏幕比例为空?

为什么我的对象保持为空?

为什么我的WPF CompboBox为空

(为什么)在for循环之前我应该测试一个数组是否为空?

为什么我的变量为空?

为什么我的请求正文为空?

为什么我的清单为空?

为什么我的双向链表迭代器打印为空?

酶和摩卡咖啡让我在伊斯坦布尔覆盖率测试中出错,为什么?

WebApi - 为什么我的帖子变量总是为空?

为什么当我运行我的 phpunit 测试时,我得到一个空响应,但 Postman 中的相同路由/用户的行为符合预期?

身份验证服务用户为空

为什么我的数组返回测试为空?

为什么我的复杂 [FromBody] 参数为空?

为什么我的组合框为空?即使不是空的

为什么我的响应正文为空,状态为 200?

当我尝试在其中添加用户输入时,为什么我的表格单元格为空?