我正在为每个扩展mongoose.Document的模型创建一个TypeScript接口。
import mongoose, { Document } from 'mongoose';
export interface IAccount extends Document {
_id: mongoose.Types.ObjectId;
name: string;
industry: string;
}
然后使用接口导出模式:
export default mongoose.model<IAccount>('Account', accountSchema);
问题在于,在Jest中,仅创建具有测试功能所需的属性的对象是不够的,TypeScript会抱怨所有缺少的字段。
function getData(account: IAccount){
return account;
}
const account = {
name: 'Test account name',
industry: 'test account industry'
}
getData(account);
'{类型名称:字符串;行业:字符串; }”不可分配给“ IAccount”类型的参数。 输入'{name:string;行业:字符串; }”缺少类型“ IAccount”的以下属性:_id,increment,model和其他52个。ts(2345)
创建满足TypeScript用于测试目的的对象的最简单方法是什么?
答案 0 :(得分:0)
一种选择是创建与预期类型匹配的模拟...
...但是对于高度复杂的类型来说可能很难。
另一种选择是告诉TypeScript您希望您的模拟通过编译时类型检查。
您可以通过将模拟类型分配为any
来做到这一点:
function getData(account: IAccount){
return account;
}
const account: any = { // <= use type "any"
name: 'Test account name',
industry: 'test account industry'
}
getData(account); // <= no error