我的架构是:
var ItemSchema = new Schema({
sku: {
type: String,
trim: true,
index: true,
required: true
},
description: {
type: String,
trim: true,
required: true
},
client_id: {
type: Schema.ObjectId,
ref: 'Client',
index: true,
required: true
}
}, {versionKey: false, autoIndex: false});
ItemSchema.index({sku: 1, client_id: 1}, {unique: true});
我希望每个client_id的sku都是唯一的。所以我认为索引可以解决问题。我正在运行mocha
单元测试,测试是:
it('should fail if the sku is not unique per client', function(done) {
var secondItem = validItem;
return validItem.save(function(err) {
should.not.exist(err);
return secondItem.save(function(err) {
should.exist(err);
done();
});
});
});
具有保存第二个项目(相同sku
和相同client_id
)的逻辑应该导致错误。但是,我没有得到任何错误:
1) <Unit Test> Model Item: Method Save should fail if the sku is not unique per client:
Uncaught AssertionError: expected null to exist
我做错了什么?
答案 0 :(得分:1)
您的测试失败是因为您没有使用相同的sku
和client_id
将两个文档保存到数据库,而是将相同的文档保存到数据库中两次。
尝试创建新文档并从有效项目中复制sku
和client_id
。
it('should fail if the sku is not unique per client', function(done) {
var secondItem = new Item({
sku: validItem.sku,
client_id: validItem.client_id,
description: 'Put whatever you want here'
});
return validItem.save(function(err) {
should.not.exist(err);
return secondItem.save(function(err) {
should.exist(err);
done();
});
});
});