猫鼬在玩笑测试中保存预钩

时间:2020-07-28 16:23:47

标签: node.js express mongoose jestjs

每个人,我都有一个简单的测试用例,用于计算某物的确定等级的平均值,而我的模式和模型是:

'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 |     })

0 个答案:

没有答案