模拟来自MongoDB的数据以满足Jest中的TypeScript

时间:2019-06-06 16:31:09

标签: mongodb typescript jestjs

我正在为每个扩展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用于测试目的的对象的最简单方法是什么?

1 个答案:

答案 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