gpt4 book ai didi

node.js - Mongoose 单元测试

转载 作者:可可西里 更新时间:2023-11-01 10:42:34 25 4
gpt4 key购买 nike

我有以下 Mongoose 单元测试。 article.save() 回调中的控制台日志行打印出从数据库中保存后分配给实体的 _id 属性。但是,每当我在该行或相应单元测试的第一行放置断点时,该实体在文章集合中不可用?

谁能解释为什么会这样?我正在努力理解这一点,非常感谢任何帮助!

谢谢,马克。

var app = require('../../server.js'),
should = require('should'),
mongoose = require('mongoose'),
User = mongoose.model('User'),
Article = mongoose.model('Article');

var user, article;

describe('Article Model Unit Tests:', function () {

beforeEach(function (done) {

user = new User({
firstName: 'Full',
lastName: 'Last',
displayName: 'Full Name',
email: 'test@test.com',
username: 'username',
password: 'password'
});

user.save(function () {
article = new Article({
title: 'Article Title',
content: 'Content Article',
user: user
});

article.save(function (err, savedArticle) {
console.log(savedArticle._id);
});
});

done();
});

describe('Testing the save method', function () {
it('Should be able to save without problems', function () {
article.save(function (err) {
should.not.exist(err);
});
});

it('Should not be able to save without title', function () {
article.title = '';

article.save(function (err) {
should.exist(err);
});
});
});

afterEach(function(done) {
Article.remove(function(){
User.remove(function(){
done();
});
});
});
});

最佳答案

我认为 done 调用应该移到 article.save 中

就像现在一样,done() 几乎总是在两次保存完成之前被调用,如果 done 被移动,那么 beforeach block 只会在两次保存都完成时完成

关于node.js - Mongoose 单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35142471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com