大家好,我有以下 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"]
,但我希望代码仅接受字符串数组。
我如何测试这个,也许我的架构声明错误或我的测试?
谢谢。