每个人,我都有一个简单的测试用例,用于计算某物的确定等级的平均值,而我的模式和模型是:
'use strict';
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const EventSchema = new Schema({
ratings: []
});
EventSchema.pre('save', function(next) {
let totalRatings = 0;
for (var i = 0; i < this.ratings.length; i++){
totalRatings += this.ratings[i].rating;
}
this.averageRating = totalRatings / this.ratings.length;
next();
})
module.exports = mongoose.model('Event', EventSchema);
当我尝试使用此测试用例测试预保存钩子时
describe('when saving event', function(){
it('should calculate average rating', function() {
Model.prototype.save = function(callback) {
callback();
};
const event = new Model({
ratings: [{
rating: 1
}, {
rating: 2
}]
});
event.save(function(){
expect(event.averageRating).toBe(1.5);
})
})
我开玩笑的结果是:
●事件模型›保存事件时›应计算平均评分
expect(received).toBe(expected) // Object.is equality
Expected: 1.5
Received: undefined
22 |
23 | event.save(function(){
> 24 | expect(event.averageRating).toBe(1.5);
| ^
25 | })
26 | })
27 | })