使用笑话在猫鼬中预钩的单元测试用例

编程入门 行业动态 更新时间:2024-10-10 03:30:38

使用笑话在猫鼬中预钩的<a href=https://www.elefans.com/category/jswz/34/1771349.html style=单元测试用例"/>

使用笑话在猫鼬中预钩的单元测试用例

i AM试图编写用于预钩的单元测试用例。在控制台中传递文档时,我面临着检查this.isNew的问题,该文档打印为未定义。谁能告诉我这段代码有什么问题吗?

schema

// hooks callback
    export async function arrayCount(this: any, next: NextFunction) {
      if (this.isNew) {
        const parentArray = (this as any).parentArray();
        const maxSequence = parentArray.reduce((maximum: number, review: ReviewRatingType) => {
          if (review.review_rating_no) {
            const sequenceString = review.review_rating_no.match(/\d+/g);
            if (!sequenceString) {
              throw new Error('Invalid sequence in array.');
            }
            const sequenceNumber = parseInt(sequenceString.toString());
            if (sequenceNumber > maximum) {
              maximum = sequenceNumber;
            }
          }
          return maximum;
        }, 0);
        const sequence = 'RAT' + (maxSequence + 1 + '').padStart(3, '0');
        this.set({ review_rating_no: sequence });
      }
      next();
    }
    /**
     * Product Review Schema.
     */
    @singleton()
    export class ReviewRatingSchema extends AbstractSchema {
      isSubDocument = true;
      entityName = 'review_rating';
      schemaDefinition = {
        review_rating_user_id: {
          type: ObjectId,
          required: [true, 'review_rating_user_id is required'],
          ref: 'UserModel',
          unique: true,
        },
        review_rating_user_full_name: {
          type: String,
          trim: true,
          minlength: 3,
          maxlength: 20,
          validate: {
            validator: function (value: string) {
              return RegexConstants.betaRegex.test(value);
            },
            message: 'review_rating_user_full_name is invalid.',
          },
          required: [true, 'review_rating_user_full_name is required'],
        },
        review_rating_user_rating: {
          type: String,
          minlength: 1,
          maxlength: 1,
          validate: {
            validator: function (value: string) {
              return RegexConstants.rating.test(value);
            },
            message: 'review_rating_user_rating is invalid.',
          },
          required: [true, 'review_rating_user_rating is required'],
        },
        review_rating_description: {
          type: String,
          trim: true,
          minlength: 10,
          maxlength: 500,
          validate: {
            validator: function (value: string) {
              return RegexConstants.alphaRegex.test(value);
            },
            message: 'review_rating_description is invalid.',
          },
          required: [true, 'review_rating_description is required'],
        },
      };

      indexes = ['review_rating_user_id'];

      hooks = () => {
        // sequence for review rating
        this.schema?.pre('save', arrayCount);
      };
    }

测试用例

  describe('save hook', () => {
    it('should encrypt user password.', async () => {
      // Preparing
      const context = [
        {
          review_rating_status_is_active: false,
          review_rating_user_id: '5d5e6329a85f1a0ba718ceb3',
          review_rating_user_full_name: 'susdhassr',
          review_rating_modified_date: ' 2020-05-20T06:31:37.728Z',
        },
        {
          review_rating_status_is_active: false,
          review_rating_user_id: '5d5e6329a85f1a0ba718ceb5',
          review_rating_user_full_name: 'susdhassr',
          review_rating_modified_date: ' 2020-05-20T06:31:37.728Z',
        }
      ];
      for (let i in context){
        // console.log(context[i])
        await arrayCount.call(context[i], next);
      }
      // Verifying
      expect(next).toBeCalledTimes(2);
    });
  });
回答如下:

似乎您是在普通对象而不是猫鼬文档对象上调用pre钩子。普通对象将不会具有所有的猫鼬文档属性,例如isNew。试试这个:

await arrayCount.call(new ReviewRating(context[i]), next);

如果需要parentArray(),则可能需要从父文档对象中引用它。

const review = new Review({ ratings: [ /* your objects */ ] });
await arrayCount.call(review.ratings[i], next);

更多推荐

使用笑话在猫鼬中预钩的单元测试用例

本文发布于:2024-05-07 21:08:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1757262.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元测试   笑话   猫鼬中预钩

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!