测试猫鼬模式字符串数组

时间:2021-03-03 10:14:38

标签: mongodb mongoose jestjs

大家好,我有以下 mongoose 架构:

const mongoose = require('mongoose')

const promoCodesSchema = new mongoose.Schema(
  {
    couponId: String,
    value: Number,
    codes: [
      {
        type: String,
        uppercase: true,
        trim: true,
        index: true,
        unique: true,
      },
    ],
  },
  { strict: true, timestamps: true },
)

module.exports = mongoose.model('PromoCodes', promoCodesSchema)

我想测试一下 codes 是一个字符串数组,并且我不能传递任何其他内容。 我有以下测试:

 it("asserts that the codes field are only array of strings", async() => {
    const validPromoCodesWithInvalidCodesField = new PromoCodes({
      couponId: "rate20",
      value: 20,
      codes: ["azeerr", 2, 6],
      rate: 2
    });
    
    const savedValidPromoCodesWithInvalidCodesField = await validPromoCodesWithInvalidCodesField.save()
    expect(savedValidPromoCodesWithInvalidCodesField._id).toBeDefined();
    expect(savedValidPromoCodesWithInvalidCodesField.codes).toEqual(expect.arrayContaining(["AZEERR", "2", "6"]));
  })

我的测试显示 codes: ["azeerr", 2, 6] 在添加到数据库之前已更改为 ["AZEERR", "2", "6"],但我希望代码仅接受字符串数组。

我如何测试这个,也许我的架构声明错误或我的测试?

谢谢。

0 个答案:

没有答案